实现用户协议,隐私条款在一段文字中不同颜色显示,并可点击功能

前言

图片.png

/1240)
如上图所示功能实现,有两种方法实现:
(1)直接几个textview拼接成一段文字进行实现;这种方式不太实用,多个textview实现有点浪费资源。
(2)采用SpannableString进行实现;此篇文章主要进行该方法实现

话不多说,我们开始吧:

思路

1.首先上图这段文字我们可以分成5个字符串:
①用户协议前面一段文字
②用户协议
③和
④隐私条款
⑤隐私条款后面文字
2.主要需要我们处理的就是用户协议和隐私条款
定义字符串 String user_agreement = "《用户协议》",String privacy_policy = "《隐私条款》",分别进行其点击事件,下划线,字体颜色等相关处理

代码实现
        String privacy_policy = "《隐私条款》";
        String tv_he = "和";
        String empennage_content = "。如您选择不同意,我们将无法为您提供XXX相关等功能,同时我们可能在您使用相关功能和服务时,需要在您的设备中开启特定的访问权限,以实现这些权限的对用功能";
        tvContent.setText("欢迎使用XXX,在您使用XXX前,请认真阅读并了解我们的 ");


        //用户协议部分
        SpannableString spStr = new SpannableString(user_agreement);

        spStr.setSpan(new ClickableSpan() {
            @Override
            public void updateDrawState(TextPaint ds) {
                super.updateDrawState(ds);
                ds.setColor(Color.parseColor("#FFFF4849"));       //设置文件颜色
                ds.setUnderlineText(true);      //设置下划线
            }

            @Override
            public void onClick(View widget) {
                         // 。。。用户协议点击事件
            }
        }, 0, user_agreement.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

        tvContent.append(spStr);
        tvContent.append(tv_he);

        //隐私条款部分
        SpannableString spStrPolicy = new SpannableString(privacy_policy);

        spStrPolicy.setSpan(new ClickableSpan() {
            @Override
            public void updateDrawState(TextPaint ds) {
                super.updateDrawState(ds);

                ds.setColor(Color.parseColor("#FFFF4849"));       //设置文件颜色
                ds.setUnderlineText(true);      //设置下划线
            }

            @Override
            public void onClick(View widget) {

            // 。。。隐私条款点击事件
            }
        }, 0, spStrPolicy.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        tvContent.append(spStrPolicy);
        tvContent.append(empennage_content);

        tvContent.setMovementMethod(LinkMovementMethod.getInstance());//开始响应点击事件
结束

至此结束 主要是SpannableString 的使用以及相关点击事件处理。大家有好的方案可以分享一下。

原创,转载请注明出处:https://www.jianshu.com/p/ed04fa30cd09

你可能感兴趣的:(实现用户协议,隐私条款在一段文字中不同颜色显示,并可点击功能)