TextView中用戶協(xié)議和隱私政策字體改變顏色和可點擊

今天公司接到了通知,需要在APP中加上關于用戶協(xié)議和隱私政策的彈框,需要將“用戶協(xié)議”和“隱私政策”變色和加點擊狀態(tài)。想到了用SpannableStringBuilder來做,將用到的方法和遇到的問題記錄一下。

  String msg2 = "《用戶協(xié)議》";
  SpannableStringBuilder spannable1 = new SpannableStringBuilder(msg2);
        tvContent.setMovementMethod(LinkMovementMethod.getInstance());
        spannable1.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.nvabar5)), 0, spannable1.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        spannable1.setSpan(new TextClick1(), 0, spannable1.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

其中new TextClick1()是該變色的文字添加點擊方法,TextClick1()代碼如下

    private class TextClick1 extends ClickableSpan {
        @Override
        public void onClick(View widget) {
            Intent intent = new Intent(AgreementDialogAcitivity.this, WebViewActivity.class);
            intent.putExtra(AppConst.IntentParameters.WEBVIEWURL, AppConst.SERVICEAGREEMENTURL);
            intent.putExtra(AppConst.IntentParameters.ISPLAINTEXT, true);
            intent.putExtra(AppConst.IntentParameters.TITLE, "用戶協(xié)議");
            startActivity(intent);
        }

        @Override
        public void updateDrawState(TextPaint ds) {
            ds.setUnderlineText(false);
        }
    }

等最后需要顯示的時候需要注意一個問題,用戶協(xié)議和隱私政策前后可能還有很多文字,千萬不要簡單的拼接起來直接放在textview顯示,這樣是行不通的,文字變色和點擊也沒有效果,要用append方法一個一個的追加上去。

比如這樣是不行的:

 StringBuilder stringBuffer = new StringBuilder();
        String msg = stringBuffer.append(msg1).append(spannable1).append(msg3).append(spannable2).append(msg5).toString();
        tvContent.setText(msg);

要這樣才可以:

  tvContent.setText(msg1);
  tvContent.append(spannable1);
  tvContent.append(msg3);
  tvContent.append(spannable2);
  tvContent.append(msg5);

歡迎交流。

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

友情鏈接更多精彩內容