TextView中部分字符串設置點擊


在實際開發中,我們經常設置應用的 應用條款和隱私條款為可點擊,不同顏色,沒有下劃線。這種情況一般要借助SpannableString類,下面是實現源碼:


SpannableString spanStr = new SpannableString(registerServiceClause.getText().toString());
NoUnderlineSpan underlineSpan = new NoUnderlineSpan();
spanStr.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.color_de1d1d)), spanStr.length() - 6, spanStr.length() - 2, Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
spanStr.setSpan(new ClickableSpan() {
@Override
public void onClick(View widget) {
Toast.makeText(getApplicationContext(), "點擊", Toast.LENGTH_SHORT).show();
}
}, spanStr.length() - 6, spanStr.length() - 2, Spanned.SPAN_MARK_MARK);
spanStr.setSpan(underlineSpan, spanStr.length() - 6, spanStr.length() - 2, Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
registerServiceClause.setText(spanStr);
registerServiceClause.setMovementMethod(LinkMovementMethod.getInstance());

public class NoUnderlineSpan extends UnderlineSpan {
@Override
public void updateDrawState(TextPaint ds) {
ds.setColor(ds.linkColor);
ds.setUnderlineText(false);
}
}



SpannableString 直譯是可掃描的字符串,


setSpan方法有幾個參數,源碼:


public void setSpan(Object what, int start, int end, int flags) {
super.setSpan(what, start, end, flags);
}


  • what  是要發生什麼

  • start 起始位置

  • end 結束位置

  • flags 標識




本人討論群正在招募中:歡迎加入,一起討論相關技術 QQ群:195109527

0 個評論

要回覆文章請先登錄註冊