您的位置:首页 > 移动开发 > Android开发

android TextView 实现自定义文字点击效果

2016-03-07 17:06 936 查看
Android TextView 可以通过

android:autoLink="phone" 来设置文字的默认点击行为。 我们也可以自己定义文字的点击行为

TextView textView = (TextView) findViewById(R.id.span_text);

StringBuilder sb = new StringBuilder();
sb.append("个人信息");
sb.append("<a href=address" + ">"
+ "地址</a>");

sb.append("<a href=name" + ">"
+ "名字</a>");

textView.setText(Html.fromHtml(sb.toString()));
textView.setMovementMethod(LinkMovementMethod.getInstance());
textView.setHighlightColor(Color.TRANSPARENT);//去掉点击后的蓝色背景

CharSequence text = textView.getText();
if (text instanceof Spannable) {
int end = text.length();
Spannable sp = (Spannable) textView.getText();
URLSpan[] urls = sp.getSpans(0, end, URLSpan.class);
SpannableStringBuilder style = new SpannableStringBuilder(text);
style.clearSpans();// should clear old spans

// 循环把链接发过去
for (URLSpan url : urls) {
MyURLSpan myURLSpan = new MyURLSpan(url.getURL());
style.setSpan(myURLSpan, sp.getSpanStart(url),
sp.getSpanEnd(url), Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
}
textView.setText(style);
}


class MyURLSpan extends ClickableSpan{

String url;

@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setColor(Color.parseColor("#f37021"));//颜色
ds.setUnderlineText(false);//去掉下划线
}

public MyURLSpan(String url) {
this.url = url;
}

@Override
public void onClick(View widget) {
Toast.makeText(MainActivity.this, url + " is clicked" ,Toast.LENGTH_SHORT).show();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: