Android TextView中实现部分文字变色及点击事件

您所在的位置:网站首页 安卓textview字体颜色 Android TextView中实现部分文字变色及点击事件

Android TextView中实现部分文字变色及点击事件

2024-01-20 01:08| 来源: 网络整理| 查看: 265

前言

在下面一段文字中实现部分文字变色和添加事件。文本内容: 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 //前后都包括


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3