1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > android span 下划线 Android TextView实现部分文字(超链接/Span)点击事件 变色 去除下划线...

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

时间:2021-07-29 23:16:24

相关推荐

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

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

废话不多说,直接上图:

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

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);

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。