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

在这里先看看效果图:

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 情绪控_

时间: 2024-12-11 20:23:49

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

设置TextView中的部分位置可以点击,颜色不同

String url="注册宝驾会员代表您已同意<我们服务条款>,请认真阅读."; SpannableStringBuilder style = new SpannableStringBuilder(url); TextViewURLSpan myURLSpan = new TextViewURLSpan(); style.setSpan(myURLSpan,12,20, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); tv_service.setTe

android中用Spannable在TextView中设置超链接、颜色、字体

昨晚研读 ApiDemo 源码至 com.example.android.apis.text.Link 类.首先,看一下其运行效果:  要给 TextView 加上效果,方式主要有几种: 第一种,自动应用效果,使用 android:autolink 属性,如: Java代码   <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/text1"

android自定义键盘(解决弹出提示的字体颜色问题)

最近准备要做一个项目,需要用到自定义小键盘来确保安全,而且还需要精确获得用户点击键盘时的落点位置.力度.指尖接触屏幕的面积等参数. 在写自定义键盘的时候,用到了国内网上的一些代码,出处是 http://blog.csdn.net/hfsu0419/article/details/7924673 向先人致敬! 然后发现down下来的代码用到我的项目时,出现了各种问题: 1.首先,是一打开应用,就会出现弹出的是系统的输入法键盘,而是不自定义键盘,这个问题是由于EditText会在应用打开的使用获得焦

【android】巧用android:divider属性设置LinearLayout中元素之间的间隔

如上图,要想实现3个button线性排列并且使它们的大小相同.间隔相等.而且整体填充满整个linearlayout,我们一般的做法是在每两个button之间放一个固定宽度的view,然后设置button的宽度为0.layout_weight为1.这样虽能实现功能,可是总感觉不方便,特别是button多的时候. 今天介绍另一种简单.优雅的方法,就是利用android:divider属性. 1.首先新建一个固有的width/height的Drawable: spacer_medium.xml [ja

一起学android之解决在scrollview中嵌套ListView切换界面时scrollview整体向下滑动(31)

有时候我们在scrollview中会嵌套ListView,在嵌套ListView(ListView上面还有一些控件)后,切换Activity时会发现整个 scrollview 想下滑动直到ListView置顶了,而上面的控件无法显示时,我们可以这样做: 将图中的View放在顶部,最后在代码中这样做: view.setFocusable(true); view.setFocusableInTouchMode(true); view.requestFocus(); 通过setFocusable和se

android 通过html设置textview的内容不同种颜色

代码: String secondInfo = "<font color=\"#B7B7B7\">" + "空余位: " + "</font>" + "<font color=\"#D95F5F\">" + "1072" + "</font>" + "<font color=\&quo

Android程序如何在代码中改变图片原有的颜色

最近一边找工作一边完善之前的项目.之前安卓初中级的项目是模仿酷狗音乐播放器的.下载一个apk文件,改后缀,解压,然后根据官方应用的布局,用得到的图片照着做出来.记得酷狗首页有好几种主要图标,解压后得到的白色加透明组合成的,但官方应用是换主题颜色会跟着改变,这回正好有空就网上找来方法跟着改. 因为只是把白色改成别的颜色,所以不难. package com.example.ex_tupian; import android.app.Activity; import android.graphics.

节点之点击按钮设置div中p标签改变背景颜色

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style> div { width: 300px; height: 450px; border: 1px solid red; } </style> </head> <body> <input type="but

CSS:自定义链接样式(设置链接不同状态下的字体颜色/背景色等)

能够设置链接样式的 CSS 属性有很多种(例如 color, font-family, background 等等).链接的特殊性在于能够根据它们所处的状态来设置它们的样式. 代码整理自w3school:http://www.w3school.com.cn 效果图: 示例代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/x