概述
前言
在下面一段文字中实现部分文字变色和添加事件。文本内容:
xx用户协议欢迎您使用"xx",我们非常重视您的个人信息和隐私保护。在您使用“xx”服务前,请仔细阅读《xx用户协议》,我们将严格按照经您同意的各项条款使用您的个人信息,以便为您提供更好的服务。如您同意此政策,请点击“同意”并开始使用我们的产品和服务,我们会尽全力保护您的个人信息安全。
我们的需求是在"《xx用户协议》"里面的字体都改变颜色且添加点击跳转。
SpannableStringBuilder的使用
- 实例化SpannableStringBuilder
String content="...."; //文本内容在上面已经有了
SpannableStringBuilder spannable = new SpannableStringBuilder(content);
- 计算《xx用户协议》在这段文字中出现的前后位置。也就是获取《 和 》的下标。
int startIndex = 0;
int endIndex = 0;
if (!TextUtils.isEmpty(content)) {
//获取位置
startIndex = content.indexOf("《");
endIndex = content.lastIndexOf("》")+1;
}
- 设置spannable
spannable.setSpan(new TextClick(), startIndex, endIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
//这个一定要记得设置,不然点击不生效。
textView.setMovementMethod(LinkMovementMethod.getInstance());
textView.setText(spannable);
- 自定义类使其继承ClickableSpan,因为需要需要有点击事件,应该用这个类来实现。
/**** 部分文字点击事件*/
private class TextClick extends ClickableSpan {
@Override
public void onClick(View view) {
//你的业务需求,比如点击跳转到h5页面
}
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setColor(Color.BLUE); //设置字体颜色
// ds.setColor(Color.parseColor("#000000")); //自定义颜色值
ds.setUnderlineText(false); //设置没有下划线
}
}
补充说明
如果用户不需要点击事件,就直接可以使用
spannable.setSpan(new ForegroundColorSpan(Color.parseColor("#000000")),startIndex, endIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
setSpan(Object what, int start, int end, int flags) 方法说明:
1、参数设置颜色(也可以设置点击事件)
2、参数设置变色的起始位置
3、参数设置变色的结束位置
4、参数flags,有4个属性。在使用的过程中,用户可以根据自己的需求进行设置。
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE //前后都不包括
Spanned.SPAN_INCLUSIVE_EXCLUSIVE //前面包括,后面不包括
Spanned.SPAN_EXCLUSIVE_INCLUSIVE //前面不包括,后面包括
Spanned.SPAN_INCLUSIVE_INCLUSIVE //前后都包括
最后
以上就是寒冷路人为你收集整理的Android TextView中实现部分文字变色及点击事件的全部内容,希望文章能够帮你解决Android TextView中实现部分文字变色及点击事件所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复