SpannableStringBuilder实现用户隐私协议

效果图
tb
实现代码如下,有注释:

 String content = "请你务必审慎阅读、充分理解“服务协议和隐私政策”个条款,包括但不限于:为了向你提供内容等服务,我们需要收集你的设备信息、操作日志等个人信息。你可以在“设置”中查看、变更、删除个人信息并管理你的授权。你可以阅读《用户协议》和《用户隐私政策》了解详细信息。如你同意,请点击“同意”开始接受我们的服务";
        SpannableStringBuilder spannableString = new SpannableStringBuilder(content);
        int privateBeginIndex = content.indexOf("《");
        int privateEndIndex = content.indexOf("》") + 1;
        int policyBeginIndex = content.lastIndexOf("《");
        int policyEndIndex = content.lastIndexOf("》") + 1;

          //抽出公共方法
        setUserPolicy(spannableString,policyBeginIndex,policyEndIndex,"policy");
        setUserPolicy(spannableString,privateBeginIndex,privateEndIndex,"private");

        //设置点击事件,加上这句话才有效果
        tvContent.setMovementMethod(LinkMovementMethod.getInstance());
        //设置点击后的颜色为透明(有默认背景)
        tvContent.setHighlightColor(getResources().getColor(R.color.transparent));
        tvContent.setText(spannableString);
 public void setUserPolicy(SpannableStringBuilder spannableString,int start,int end,String type){
        //设置部分文字点击事件
        ClickableSpan clickableSpan = new ClickableSpan() {

            @Override
            public void updateDrawState(TextPaint ds) {
                super.updateDrawState(ds);
                //超链接形式的下划线,false 表示不显示下划线,true表示显示下划线
                ds.setUnderlineText(false);
            }

            @Override
            public void onClick(View widget) {
                showShortToast(type);
//                Intent intent = new Intent(LoginActivity.this, AgreeActivity.class);
//                startActivity(intent);
            }
        };
        spannableString.setSpan(clickableSpan, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);


//        //设置部分文字颜色
//        ForegroundColorSpan foregroundColorSpan = new ForegroundColorSpan(Color.parseColor("#5e89ef"));

        //使用ForegroundColorSpan添加点击事件会出现冲突
        UnderlineSpan colorSpan = new UnderlineSpan() {
            @Override
            public void updateDrawState(TextPaint ds) {
                ds.setColor(Color.parseColor("#5e89ef"));//设置颜色
            }
        };
        spannableString.setSpan(colorSpan, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    }
  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值