類似如下圖功能:
有時候我們可以用多個TextView來實現,但是沒法實現這種換行的,而且使用多個TextView性能上也有損耗,在Android中系統爲我們提供了一個解決辦法。就是使SpannableStringBuilder+ClickableSpan來實現。具體實現代碼如下:
String str = "閱讀完整的《用戶服務協議》和《隱私政策》瞭解詳細內容";
SpannableStringBuilder ssb = new SpannableStringBuilder();
ssb.append(str);
//第一個出現的位置
final int start = str.indexOf("《");
ssb.setSpan(new ClickableSpan() {
@Override
public void onClick(View widget) {
//用戶服務協議點擊事件
}
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
//設置文件顏色
ds.setColor(getResources().getColor(R.color.action_color));
// 去掉下劃線
ds.setUnderlineText(false);
}
}, start, start + 8, 0);
//最後一個出現的位置
final int end = str.lastIndexOf("《");
ssb.setSpan(new ClickableSpan() {
@Override
public void onClick(View widget) {
//隱私協議點擊事件
}
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
//設置文件顏色
ds.setColor(getResources().getColor(R.color.action_color));
// 去掉下劃線
ds.setUnderlineText(false);
}
}, end, end + 6, 0);
textView.setMovementMethod(LinkMovementMethod.getInstance());
textView.setText(ssb, TextView.BufferType.SPANNABLE);