您的位置:首页 > 移动开发 > Android开发

一起学android之如何设置TextView中不同字段的字体颜色(22)

2015-03-12 19:42 585 查看
在这里先看看效果图:



OK,有时候,在我们的项目中会要求TextView中文本有一部分的字体颜色不一样,这时我们应该使用

SpannableStringBuilder这个工具类,当然这个类的功能很强大,这里我只是实现上面的样式,其它的不做介绍,

SpannableStringBuilder的实现接口是Spannable这个接口,而Spannable最终都实现了CharSequence,因此我们直

接可以通过TextView.setText()来进行设置。

下面给出实现代码:

public class StringFormatUtil {
private SpannableStringBuilder spBuilder;
private String wholeStr, highlightStr;
private Context mContext;
private int color;
private int start = 0, end = 0;

/**
*
* @param context
* @param wholeStr 全部文字
* @param highlightStr 改变颜色的文字
* @param color 颜色
*/
public StringFormatUtil(Context context,String wholeStr,String highlightStr,int color){
this.mContext=context;
this.wholeStr=wholeStr;
this.highlightStr=highlightStr;
this.color=color;

}

public StringFormatUtil fillColor(){
if(!TextUtils.isEmpty(wholeStr)&&!TextUtils.isEmpty(highlightStr)){
if(wholeStr.contains(highlightStr)){
/*
*  返回highlightStr字符串wholeStr字符串中第一次出现处的索引。
*/
start=wholeStr.indexOf(highlightStr);
end=start+highlightStr.length();
}else{
return null;
}
}else{
return null;
}
spBuilder=new SpannableStringBuilder(wholeStr);
color=mContext.getResources().getColor(color);
CharacterStyle charaStyle=new ForegroundColorSpan(color);
spBuilder.setSpan(charaStyle, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
return this;
}

public SpannableStringBuilder getResult(){
if (spBuilder != null) {
return spBuilder;
}
return null;
}
}


当然上面的第一步是获取你要改变颜色的文字的起始位置到结束位置,接着通过SpannableStringBuilder来改变文字

的颜色。

public class MainActivity extends Activity {
private TextView tv_show;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}

private void initView() {
tv_show = (TextView) findViewById(R.id.tv_show);
String wholeStr = "想要改变后面的颜色这是要改变的颜色";
StringFormatUtil spanStr = new StringFormatUtil(this, wholeStr,
"这是要改变的颜色", R.color.blue).fillColor();
tv_show.setText(spanStr.getResult());
}

}


转载请注明出处:http://blog.csdn.net/hai_qing_xu_kong/article/details/44225955 情绪控_
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐