Android实现部分文字可点击及变色

可以使用SpannableString和ClickableSpan:

        TextView userAgreement = findViewById(R.id.user_agreement);
        SpannableString agreement = new SpannableString("Agree to the User Agreement and Privacy Policy");
        agreement.setSpan(new MyClickableSpan("User Agreement"), 13, 27, SpannableString.SPAN_INCLUSIVE_INCLUSIVE);
        agreement.setSpan(new MyClickableSpan("Privacy Policy"), 32, 46, SpannableString.SPAN_INCLUSIVE_INCLUSIVE);
        userAgreement.setText(agreement);
        userAgreement.setMovementMethod(LinkMovementMethod.getInstance());

上面代码中setMovementMethod这一句是固定的,必须添加,否则点击没效果。这里setSpan方法有四个参数:

//what:要加何种样式或功能
//start:开始加样式的位置
//end:结束加样式的位置
//flags:是否包含开始和结束位置的字符
public void setSpan (Object what, int start, int end, int flags)

其中start参数和end参数的确定有个小技巧,就是Android Studio当你在源代码窗格选择了一段文字,底部状态栏会自动出现字符个数,这样省着一个一个数字符的麻烦。

MyClickableSpan代码如下:

    static class MyClickableSpan extends ClickableSpan {

        private String text;

        public MyClickableSpan(String text) {
            this.text = text;
        }

        @Override
        public void onClick(@NonNull View view) {
            Toast.makeText(view.getContext(), text, Toast.LENGTH_SHORT).show();
        }

        @Override
        public void updateDrawState(@NonNull TextPaint ds) {
            super.updateDrawState(ds);
            ds.setColor(Color.parseColor("#ff3783"));
            ds.setUnderlineText(false);
        }
    }

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值