美文网首页Android开发Android开发经验谈Android技术知识
实现用户协议,隐私条款在一段文字中不同颜色显示,并可点击功能

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

作者: 徐子念 | 来源:发表于2020-03-02 16:08 被阅读0次
    前言
    图片.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

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/kfglhhtx.html