设置指定文字的颜色

有时候我们经常需要设定指定文字的颜色,比如查询到的文字设置成和其它不一样的颜色,高亮显示,刚刚我试了效果还不错,特放上来留着笔记,以后直接来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);

//下面这个听说是前景色用的,我还没试过,觉得有用,先收下了

 

  1. SpannableStringBuilder style =newSpannableStringBuilder("test Height light");
  2. //参数一:高亮颜色[ForegroundColorSpan前景色]
  3. //from:高亮开始
  4. //to:高亮结束
  5. style.setSpan(newForegroundColorSpan(color),from, to,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  6. (TextView)view.setText(style);

//下面这些个没试过,听说效果更牛,这么晚了,先不试了,先收了,

可以使用以下两种方法来实现:
1.用Html类的fromHtml()方法格式化要放到TextView里的文字。这种方法不仅能够高亮部分文字,而且还能够使用HTML里面方式来格式化文字,显示出各种效果。

  1. TextView.setText(Html.fromHtml("<font color=#FF0000>hello</font>"));
 

上述代码把hello设置成红色。
2.使用Spannable或实现它的类,如SpannableString。Spannable对象也可以实现一样的效果

   
  1. SpannableString ss =newSpannableString("abcdefgh");
  2. ss.setSpan(newBackgroundColorSpan(Color.RED),2,4,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  3. TextView.setText(ss);
 

上述代码把[2,4)之间的字符设置成红色,也就是c和d。


原文地址:https://www.cnblogs.com/jiangu66/p/3241119.html