我是靠谱客的博主 柔弱哈密瓜,最近开发中收集的这篇文章主要介绍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;
	}
}


当然上面的第一步是获取你要改变颜色的文字的起始位置到结束位置,接着通过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 情绪控_

最后

以上就是柔弱哈密瓜为你收集整理的Android之如何设置TextView中不同字段的字体颜色的全部内容,希望文章能够帮你解决Android之如何设置TextView中不同字段的字体颜色所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部