求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
 
  
 
 
     
   
分享到
Android开发之字符替换与文本颜色改变方案
 

发布于2012-6-13

 

应用开发中有时候会遇到对文本替换与改变文本颜色的情况,可以通过字符串拼接的方式处理这种情况,这种方式会比较繁琐,且会引入过多的TextView,今天与大家分享一种简单高效的解决方案。

一:TextView组件改变部分文字的颜色:

 
  //方法一:

  TextView textView1 = (TextView) findViewById(R.id.text1);

  textView1.setText(Html.fromHtml("红色其它颜色"));

  //方法二:

  TextView textView2 = (TextView) findViewById(R.id.text2);

  String text = "获得银宝箱!";

  SpannableStringBuilder style = new SpannableStringBuilder(text);

  style.setSpan(new BackgroundColorSpan(Color.RED), 2, 5, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
    //设置指定位置文字的背景颜色

  style.setSpan(new ForegroundColorSpan(Color.RED), 0, 2, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
    //设置指定位置文字的颜色

  textView2.setText(style);二:android string.xml文件中的整型和string型代替:

  //字符串替换方法:

  TextView textView3 = (TextView) findViewById(R.id.text3);

  String text3 = String.format(getResources().getString(R.string.wether), 18, 30, "雷雨大风");

  textView3.setText(text3);

%1$d表示为第一个整型,以此类推;

在项目开发者,经常需要把以上两者结合起来使用。可以避免很多textview的拼接,如下所示:

 
  //将颜色替换与字符串替换两者结合

  TextView textView4 = (TextView) findViewById(R.id.text4);

  String text4 = String.format(getResources().getString(R.string.wether), 18, 30, "雷雨大风");

  int index[] = new int[3];

  index[0] = text4.indexOf("18");

  index[1] = text4.indexOf("30");

  index[2] = text4.indexOf("雷雨大风");

  SpannableStringBuilder style2 = new SpannableStringBuilder(text4);

  style2.setSpan(new ForegroundColorSpan(Color.RED), index[0], index[0]
 + 2, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);

  style2.setSpan(new ForegroundColorSpan(Color.GREEN), index[1], index[1] 
+ 2, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);

  style2.setSpan(new BackgroundColorSpan(Color.YELLOW), index[2], index[2] + 3,

  Spannable.SPAN_EXCLUSIVE_INCLUSIVE);

  textView4.setText(style2);

贴上全部代码供大家参考:

 
  public class TextViewColor extends Activity {

  @Override

  protected void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.textview_color);

  //改变字体颜色

  //方法一:

  TextView textView1 = (TextView) findViewById(R.id.text1);

  textView1.setText(Html.fromHtml("红色其它颜色"));

  //方法二:

  TextView textView2 = (TextView) findViewById(R.id.text2);

  String text = "获得银宝箱!";

  SpannableStringBuilder style = new SpannableStringBuilder(text);

  style.setSpan(new BackgroundColorSpan(Color.RED), 2, 5, Spannable.SPAN_EXCLUSIVE_INCLUSIVE); 
//设置指定位置文字的背景颜色

  style.setSpan(new ForegroundColorSpan(Color.RED), 0, 2, Spannable.SPAN_EXCLUSIVE_INCLUSIVE); 
//设置指定位置文字的颜色

  textView2.setText(style);

  //字符串替换方法:

  TextView textView3 = (TextView) findViewById(R.id.text3);

  String text3 = String.format(getResources().getString(R.string.wether), 18, 30, "雷雨大风");

  textView3.setText(text3);

  //将颜色替换与字符串替换两者结合

  TextView textView4 = (TextView) findViewById(R.id.text4);

  String text4 = String.format(getResources().getString(R.string.wether), 18, 30, "雷雨大风");

  int index[] = new int[3];

  index[0] = text4.indexOf("18");

  index[1] = text4.indexOf("30");

  index[2] = text4.indexOf("雷雨大风");

  SpannableStringBuilder style2 = new SpannableStringBuilder(text4);

  style2.setSpan(new ForegroundColorSpan(Color.RED), index[0], index[0] + 2,
 Spannable.SPAN_EXCLUSIVE_INCLUSIVE);

  style2.setSpan(new ForegroundColorSpan(Color.GREEN), index[1], index[1] + 2,
 Spannable.SPAN_EXCLUSIVE_INCLUSIVE);

  style2.setSpan(new BackgroundColorSpan(Color.YELLOW), index[2], index[2] + 3,

  Spannable.SPAN_EXCLUSIVE_INCLUSIVE);

  textView4.setText(style2);

  }

  }

XML文件

 
  http://schemas.android.com/apk/res/android"

  android:layout_width="fill_parent"

  android:layout_height="fill_parent"

  android:gravity="left"

  android:orientation="vertical" >

  < p=""> <>

  android:id="@+id/text1"

  android:layout_width="wrap_content"

  android:layout_height="wrap_content" />

  < p=""> <>

  android:id="@+id/text2"

  android:layout_width="wrap_content"

  android:layout_height="wrap_content" />

  < p=""> <>

  android:id="@+id/text3"

  android:layout_width="wrap_content"

  android:layout_height="wrap_content" />

  < p=""> <>

  android:id="@+id/text4"

  android:layout_width="wrap_content"

  android:layout_height="wrap_content" />

 


相关文章

深度解析:清理烂代码
如何编写出拥抱变化的代码
重构-使代码更简洁优美
团队项目开发"编码规范"系列文章
相关文档

重构-改善既有代码的设计
软件重构v2
代码整洁之道
高质量编程规范
相关课程

基于HTML5客户端、Web端的应用开发
HTML 5+CSS 开发
嵌入式C高质量编程
C++高级编程

 
分享到
 
 
     


android人机界面指南
Android手机开发(一)
Android手机开发(二)
Android手机开发(三)
Android手机开发(四)
iPhone消息推送机制实现探讨
手机软件测试用例设计实践
手机客户端UI测试分析
手机软件自动化测试研究报告
更多...   


Android高级移动应用程序
Android应用开发
Android系统开发
手机软件测试
嵌入式软件测试
Android软、硬、云整合


领先IT公司 android开发平台最佳实践
北京 Android开发技术进阶
某新能源领域企业 Android开发技术
某航天公司 Android、IOS应用软件开发
阿尔卡特 Linux内核驱动
艾默生 嵌入式软件架构设计
西门子 嵌入式架构设计
更多...