android TextView超鏈接設置顏色

因爲在做一個項目要對文本解析,找出文本中的url、電話、email、地址、等。用系統默認的autolink autolinktextcolor只能統一設置超鏈接顏色,不能動態的實現各個Span繪製顏色的不同,因爲文本是不固定的,所以Span位置和數量就不能確定,也就不可能預先配置顏色。下面是解決方法,動態設置不同span顏色:
//創建一個 SpannableString對象
注意:不要在xml配置android:autoLink屬性
SpannableString sp = new SpannableString(str);
//這句很重要,也可以添加自定義正則表達式
Linkify.addLinks(sp,Linkify.ALL);
//主要是獲取span的位置
URLSpan[] spans = sp.getSpans(0, str.length(), URLSpan.class);
//這裏可以用過循環處理就可以動態實現文本顏色的差別化了
//設置高亮樣式一
sp.setSpan(new ForegroundColorSpan(Color.RED), sp.getSpanStart(spans[0]), sp.getSpanEnd(spans[0]), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
//設置高亮樣式二
sp.setSpan(new ForegroundColorSpan(Color.YELLOW), sp.getSpanStart(spans[1]), sp.getSpanEnd(spans[1]), Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
//設置斜體
sp.setSpan(new StyleSpan(android.graphics.Typeface.BOLD_ITALIC), 27, 29, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
//SpannableString對象設置給TextView
textview.setText(sp);
//設置TextView可點擊
textview.setMovementMethod(LinkMovementMethod.getInstance());
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章