Android一段话多个高亮,且每个事件设置点击

实现效果展示

 

废话不多说贴代码

        String str = "感谢您选择使用血源派!我们做了诸多有利于保护个人信息的努力,为了更好的保障你的个人权益,在您使用在使用我们的产品前,请您认真阅读《用户协议》和《隐私政策声明》的全部内容,了解个人信息的使用情况与自主选择的权利。";
        SpannableStringBuilder builder = new SpannableStringBuilder(str);
        ForegroundColorSpan span = new ForegroundColorSpan(Color.parseColor("#3AD29F"));//单独设置颜色
        ForegroundColorSpan span2 = new ForegroundColorSpan(Color.parseColor("#3AD29F"));
        builder.setSpan(span,64, 70, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        builder.setSpan(span2,71, 79, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        AbsoluteSizeSpan sizeSpan = new AbsoluteSizeSpan(40);// 设置字体大小
        builder.setSpan(sizeSpan, 0, str.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);// 相对于默认字体大小的倍数,这里是1.3倍
        // 单独设置点击事件
        ClickableSpan clickableSpanOne = new ClickableSpan() {
            @Override
            public void onClick(View view) {
                if (!ButtonUtils.isFastDoubleClick(R.id.tv_cont_but)) {
                    Intent intent = new Intent(mContext, URLDetailActivity.class);
                    intent.putExtra("WebUrl", "https://www.vspfire.com/privacy_policy.html");
                    intent.putExtra("title", "隐私政策");
                    mContext.startActivity(intent);
                }
            }
            @Override
            public void updateDrawState(TextPaint paint) {
//                paint.setColor(Color.parseColor("#3072F6"));//设置颜色
                paint.setUnderlineText(false);// 设置下划线 true显示、false不显示
            }
        };
        builder.setSpan(clickableSpanOne, 71, 79, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);


        // 单独设置点击事件
        ClickableSpan clickableSpanTwo = new ClickableSpan() {
            @Override
            public void onClick(View view) {
                if (!ButtonUtils.isFastDoubleClick(R.id.tv_cont_but)) {
                    Intent intent = new Intent(mContext, URLDetailActivity.class);
                    intent.putExtra("WebUrl", "https://www.vspfire.com/user_agreement.html");
                    intent.putExtra("title", "用户协议");
                    mContext.startActivity(intent);
                }
            }
            @Override
            public void updateDrawState(TextPaint paint) {
//                paint.setColor(Color.parseColor("#3072F6"));//设置颜色
                paint.setUnderlineText(false);// 设置下划线 true显示、false不显示
            }
        };
        builder.setSpan(clickableSpanTwo, 64, 70, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        tv_cont_but.setMovementMethod(LinkMovementMethod.getInstance());//不设置点击不生效
        tv_cont_but.setText(builder);
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

peacejay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值