有時候我們經常需要設定指定文字的顏色,比如查詢到的文字設定成和其它不一樣的顏色,高亮顯示,剛剛我試了效果還不錯,特放上來留著筆記,以後直接來copy就可以了,我是個懶蟲,核心代碼如下
//test====================================
這些我是寫在BaseAdapter裡面的getView方法裡的,因這些個資料是在listView中的,所以設了幾個標記
if(isColor && null != strColor && (list.get(position).getContent()).lastIndexOf(strColor)!= -1){
LogWrapper.i("longlong", "test===================");
SpannableString span = new SpannableString(list.get(position).getContent());
span.setSpan(new ForegroundColorSpan(Color.GREEN),
(list.get(position).getContent()).lastIndexOf(strColor),
(list.get(position).getContent()).lastIndexOf(strColor)+strColor.length(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
holder.content.setText(span);
}
//test=================================================
else{
LogWrapper.i("longlong","test===================else");
holder.content.setText(list.get(position).getContent());
}
//下面這個是從網上得來的,覺得還不錯,也試了下,他的是過濾掉了其它不匹配的字元,覺得有用,收藏如下
TextView tv = (TextView) findViewById(R.id.hello);
SpannableString s = new SpannableString(getResources().getString(R.string.linkify));
Pattern p = Pattern.compile("abc");
Matcher m = p.matcher(s);
while (m.find()) {
int start = m.start();
int end = m.end();
s.setSpan(new ForegroundColorSpan(Color.RED), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
tv.setText(s);
//下面這個聽說是前景色彩用的,我還沒試過,覺得有用,先收下了
- SpannableStringBuilder style
=
new
SpannableStringBuilder("test Height light");
- //參數一:醒目提示[ForegroundColorSpan前景色彩]
- //from:高亮開始
- //to:高亮結束
- style.setSpan(new
ForegroundColorSpan(color),
from, to,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
- (TextView)view.setText(style);
//下面這些個沒試過,聽說效果更牛,這麼晚了,先不試了,先收了,
可以使用以下兩種方法來實現:
1.用Html類的fromHtml()方法格式化要放到TextView裡的文字。這種方法不僅能夠高亮部分文字,而且還能夠使用HTML裡面方式來格式化文字,顯示出各種效果。
- TextView.setText(Html.fromHtml("<font color=#FF0000>hello</font>"));
上述代碼把hello設定成紅色。
2.使用Spannable或實現它的類,如SpannableString。Spannable對象也可以實現一樣的效果
- SpannableString ss = new SpannableString("abcdefgh");
- ss.setSpan(new BackgroundColorSpan(Color.RED), 2, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
- TextView.setText(ss);
上述代碼把[2,4)之間的字元設定成紅色,也就是c和d。