實現(xiàn)用戶協(xié)議,隱私條款在一段文字中不同顏色顯示,并可點擊功能

前言

圖片.png

/1240)
如上圖所示功能實現(xiàn),有兩種方法實現(xiàn):
(1)直接幾個textview拼接成一段文字進行實現(xiàn);這種方式不太實用,多個textview實現(xiàn)有點浪費資源。
(2)采用SpannableString進行實現(xiàn);此篇文章主要進行該方法實現(xiàn)

話不多說,我們開始吧:

思路

1.首先上圖這段文字我們可以分成5個字符串:
①用戶協(xié)議前面一段文字
②用戶協(xié)議
③和
④隱私條款
⑤隱私條款后面文字
2.主要需要我們處理的就是用戶協(xié)議和隱私條款
定義字符串 String user_agreement = "《用戶協(xié)議》",String privacy_policy = "《隱私條款》",分別進行其點擊事件,下劃線,字體顏色等相關(guān)處理

代碼實現(xiàn)
        String privacy_policy = "《隱私條款》";
        String tv_he = "和";
        String empennage_content = "。如您選擇不同意,我們將無法為您提供XXX相關(guān)等功能,同時我們可能在您使用相關(guān)功能和服務時,需要在您的設備中開啟特定的訪問權(quán)限,以實現(xiàn)這些權(quán)限的對用功能";
        tvContent.setText("歡迎使用XXX,在您使用XXX前,請認真閱讀并了解我們的 ");


        //用戶協(xié)議部分
        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) {
                         // 。。。用戶協(xié)議點擊事件
            }
        }, 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());//開始響應點擊事件
結(jié)束

至此結(jié)束 主要是SpannableString 的使用以及相關(guān)點擊事件處理。大家有好的方案可以分享一下。

原創(chuàng),轉(zhuǎn)載請注明出處:http://www.itdecent.cn/p/ed04fa30cd09

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容