标签:spannable spannablestringbuild android textview 字体颜色
在这里先看看效果图:
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; } }
的颜色。
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 情绪控_
一起学android之如何设置TextView中不同字段的字体颜色(22)
标签:spannable spannablestringbuild android textview 字体颜色
原文地址:http://blog.csdn.net/hai_qing_xu_kong/article/details/44225955