在这里先看看效果图:

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中不同字段的字体颜色(22)的更多相关文章

  1. 设置c++中cout输出的字体颜色

    在c++中控制台的默认字体颜色是白色,但是有时我们需要其他颜色,比如用红色提示错误,使用绿色提示计算完成,使用黄色表示警示等等,那么如何设置控制台文字的颜色呢? 一种方法是通过右键控制台进行颜色设置, ...

  2. SecureCRT SSH Linux中不显示彩色 字体颜色、文件夹和文件显示的颜色区别开解决办法

    SecureCRT SSH Linux中不显示彩色 字体颜色.文件夹和文件显示的颜色区别开解决办法 实验环境: 刚开始我的情况是这样的:带颜色的显示不出来,然后还能看到,此处有内容,猜测是Secure ...

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

    昨晚研读 ApiDemo 源码至 com.example.android.apis.text.Link 类.首先,看一下其运行效果:  要给 TextView 加上效果,方式主要有几种: 第一种,自动 ...

  4. Android Studio 如何在TextView中设置图标并按需调整图标大小

    •任务 相信大家对这张图片都不陌生,没错,就是 QQ动态 向我们展示的界面. 如何实现呢? •添加文字并放入图标 新建一个 Activity,取名为 QQ,Android Studio 自动为我们生成 ...

  5. Android开发技巧——去掉TextView中autolink的下划线

    我们知道,在布局文件中设置textview的autolink及其类型,这时textivew上会显示link的颜色,并且文字下面会有一条下划线,表示可以点击.而在我们在点击textview时,应用将根据 ...

  6. Android 开发学习进程0.17 Android资源文件selector textview显示两种不同字体

    selector 是安卓资源文件的一种,它可以使按钮等实现不同状态下的不同UI,不用在代码中实现,而使用方式有两种,一种在color文件下 创建.xml可以使按钮等字体在不同状态下的变化,其二是在dr ...

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

    最近准备要做一个项目,需要用到自定义小键盘来确保安全,而且还需要精确获得用户点击键盘时的落点位置.力度.指尖接触屏幕的面积等参数. 在写自定义键盘的时候,用到了国内网上的一些代码,出处是 向先人致敬! ...

  8. input设置背景透明、placeholder的字体颜色及大小

    1.设置input背景透明: background:rgba(255,255,255,0.1); 前面三个参数为对应的rgb数值,第四个参数为透明度:0~1,0:透明,1:不透明: 2.设置input ...

  9. android 设置textview中划线效果

    textView.getPaint().setFlags(Paint. UNDERLINE_TEXT_FLAG ); //下划线   textView.getPaint().setAntiAlias( ...

随机推荐

  1. gradle ofbiz 16 开发环境搭建

    原 gradle ofbiz 16 开发环境搭建 2017年02月13日 10:59:19 阅读数:2702 1.安装jdk 2.配置jdk环境变量 3.eclipse 安装svn 插件 4.svn下 ...

  2. 洛谷 P1262 间谍网络==Codevs 4093 EZ的间谍网络

    4093 EZ的间谍网络 时间限制: 10 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 由于外国间谍的大量渗入,国家安全正处于高度的危机之中.如果A间谍手中掌握着关于B ...

  3. JS允许找不到对象 不必判断是否存在某个div

    原文发布时间为:2009-11-10 -- 来源于本人的百度文章 [由搬家工具导入] 加一个try catch 即可。。。。 例子: for(var i=0;i<10;i++)     {    ...

  4. 前端知识点总结——CSS

    1.CSS的概述 1.什么是CSS? CSS:Cascading Style Sheets层叠样式表,级联样式表(简称:样式表) 2.作用 设置HTML网页元素的样式 3.HTML与CSS的关系 HT ...

  5. shell 执行提示No such file or directory

    问题描述: 项目开发过程中ansible执行脚本失败,单独运行shell脚本提示:No such file or directory,脚本结构执行脚本a 调用另一脚本b, 但查看b脚本路径正确不存在找 ...

  6. steam linux 使用socks代理

    环境:Ubuntu 15.10 64bit,Steam:built:May 10 2016 需要的工具:ssh/shadowsocks等socks5代理,tsocks ---------------- ...

  7. LeetCode OJ-- Populating Next Right Pointers in Each Node II **@

    https://oj.leetcode.com/problems/populating-next-right-pointers-in-each-node-ii/ 接上一题目,输入的树不是perfect ...

  8. ios开发某个页面横不过来屏幕的时候

    某一个页面需要横屏,其他的页面任然保持竖屏需要以下关键的几个步骤: 1.修改系统代理方法的返回值 -(UIInterfaceOrientationMask)application:(UIApplica ...

  9. react native windows create bundle folder

    生成bundle 文件 命令 react-native bundle --platform android --dev false --entry-file index.js --bundle-out ...

  10. 在typescript中import第三方类库clipboard报错

    一.问题 在实际开发项目中就遇到了这样的问题,需要在Vue+Typescript项目中添加复制文本的功能,就找了clipboard插件,先是新建了一个新的项目用来实验看看是否好用,都写好了以后发给别人 ...