今天公司接到了通知,需要在APP中加上關(guān)于用戶協(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);
歡迎交流。