首页 > 其他分享 >Android TextView部分文字(超链接/Span)点击事件、变色、去除下划线

Android TextView部分文字(超链接/Span)点击事件、变色、去除下划线

时间:2023-03-27 15:08:32浏览次数:37  
标签:文字 trim style Span 下划线 超链接 去除 new


马上8月结束了,深海决定写点东西分享给大家,祝各位程序猿身体健康万事如意.

废话不多说,直接上图:

Android TextView部分文字(超链接/Span)点击事件、变色、去除下划线_Android 自定义Span

如图中蓝色文字的效果,需求如下:

1,点击跳转到另一个页面

2.去除下划线

3.颜色自定义

如果不需要点击事件,只是想实现部分文字变色的话

第一步:实现目标文字段点击事件

final SpannableStringBuilder style = new SpannableStringBuilder();
String content = "文章内容"
String trim = "#" + "目标文字" + "#"; 
//设置文字
style.append(trim+content);

//设置部分文字点击事件
ClickableSpan clickableSpan = new ClickableSpan() {
      @Override
      public void onClick(View widget) {
      MyContext.startActivity(new Intent(MyContext, Activity_topic.class));
      }
 };
style.setSpan(clickableSpan, 0, trim.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

第二步:去除下划线

这边有一个要点:

必须要先去除下划线,再给文字设置颜色,否则颜色无效.  // 也就是说,必须一步两步三步按顺序去做,勿要搞错顺序!

//去除下划线,写在第一步代码的下面:
NoUnderlineSpan noUnderlineSpan = new NoUnderlineSpan();
style.setSpan(noUnderlineSpan,0 , trim.length(), Spanned.SPAN_MARK_MARK);

// 创建一个自定义的去除下划线的 Span  内部类或者外部类,自行选择
class NoUnderlineSpan extends UnderlineSpan {   

        @Override
        public void updateDrawState(TextPaint ds) {
            ds.setColor(ds.linkColor);
            ds.setUnderlineText(false);
        }
    }

第三步:定义目标文字(超链接)的颜色

//设置部分文字颜色
ForegroundColorSpan foregroundColorSpan = new ForegroundColorSpan(Color.parseColor("#0000FF"));
style.setSpan(foregroundColorSpan, 0, trim.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
//经历三步处理后,最终配置给TextView
MyTextView.setMovementMethod(LinkMovementMethod.getInstance());
MyTextView.setText(style);

最后,有什么深海没有讲清楚的,或者大家想问的,欢迎到评论区留言哦!

标签:文字,trim,style,Span,下划线,超链接,去除,new
From: https://blog.51cto.com/u_13520184/6152113

相关文章