clickableSpan实现textView文字部分点击有响应

Posted 短暂的火光

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了clickableSpan实现textView文字部分点击有响应相关的知识,希望对你有一定的参考价值。

   先定义一个clickableSpan的子类

 1 class MyClickText extends ClickableSpan{
 2         private Context context;
 3 
 4         public MyClickText(Context context) {
 5             this.context = context;
 6         }
 7 
 8         @Override
 9         public void updateDrawState(TextPaint ds) {
10             super.updateDrawState(ds);
11             //设置文本的颜色
12             ds.setColor(Color.RED);
13             //超链接形式的下划线,false 表示不显示下划线,true表示显示下划线
14             ds.setUnderlineText(false);
15         }
16 
17         @Override
18         public void onClick(View widget) {
19             Toast.makeText(context,"发生了点击效果",Toast.LENGTH_SHORT).show();
20         }
21     }

然后是在textView中的使用

1 private TextView clicktext;
2         clicktext = (TextView) findViewById(R.id.clicktext);
3      
4         SpannableString str = new SpannableString("超文本:http://www.baidu.com");
5         str.setSpan(new MyClickText(this),4,str.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
6      //当然这里也可以通过setSpan来设置哪些位置的文本哪些颜色
7         clicktext.setText(str);
8         clicktext.setMovementMethod(LinkMovementMethod.getInstance());//不设置 没有点击事件
9         clicktext.setHighlightColor(Color.TRANSPARENT); //设置点击后的颜色为透明

 

以上是关于clickableSpan实现textView文字部分点击有响应的主要内容,如果未能解决你的问题,请参考以下文章

如何在 TextView 中获取 ClickableSpan 的坐标?

SpannableString实现TextView的链接效果

安卓 TextView 七宗罪

spnnableBuilder 实现Android 表情 高亮字体 及 点击事件

spnnableBuilder 实现Android 表情 高亮字体 及 点击事件

Android ClickableSpan 获取文本 onClick()