前言
圖片.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 的使用以及相關點擊事件處理砖顷。大家有好的方案可以分享一下贰锁。
原創(chuàng),轉載請注明出處:http://www.reibang.com/p/ed04fa30cd09