[java] view plain copy
  1. textView=(TextView)findViewById(R.id.textview);
  2. SpannableStringBuilderbuilder=newSpannableStringBuilder(textView.getText().toString());
  3. //ForegroundColorSpan为文字前景色,BackgroundColorSpan为文字背景色
  4. ForegroundColorSpanredSpan=newForegroundColorSpan(Color.RED);
  5. ForegroundColorSpanwhiteSpan=newForegroundColorSpan(Color.WHITE);
  6. ForegroundColorSpanblueSpan=newForegroundColorSpan(Color.BLUE);
  7. ForegroundColorSpangreenSpan=newForegroundColorSpan(Color.GREEN);
  8. ForegroundColorSpanyellowSpan=newForegroundColorSpan(Color.YELLOW);
  9. builder.setSpan(redSpan,0,1,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  10. builder.setSpan(whiteSpan,1,2,Spannable.SPAN_INCLUSIVE_INCLUSIVE);
  11. builder.setSpan(blueSpan,2,3,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  12. builder.setSpan(greenSpan,3,4,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  13. builder.setSpan(yellowSpan,4,5,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  14. textView.setText(builder);

Spanned.SPAN_EXCLUSIVE_EXCLUSIVE,这是在 setSpan 时需要指定的 flag,它的意义我试了很久也没试出来,睡个觉,今天早上才突然有点想法,试之,果然。它是用来标识在 Span 范围内的文本前后输入新的字符时是否把它们也应用这个效果。分别有 Spanned.SPAN_EXCLUSIVE_EXCLUSIVE(前后都不包括)、Spanned.SPAN_INCLUSIVE_EXCLUSIVE(前面包括,后面不包括)、Spanned.SPAN_EXCLUSIVE_INCLUSIVE(前面不包括,后面包括)、Spanned.SPAN_INCLUSIVE_INCLUSIVE(前后都包括)。看个截图就更明白了:



对比一下


测试的Demo

public void setTextColor3() {mTextView = (TextView) findViewById(R.id.textview);// ForegroundColorSpan 为文字前景色,BackgroundColorSpan为文字背景色//ForegroundColorSpan不能被复用,属于一次性属性,只能给一个字段赋这样的属性ForegroundColorSpan redSpan = new ForegroundColorSpan(Color.RED);ForegroundColorSpan whiteSpan = new ForegroundColorSpan(Color.WHITE);ForegroundColorSpan blueSpan = new ForegroundColorSpan(Color.BLUE);ForegroundColorSpan greenSpan = new ForegroundColorSpan(Color.GREEN);ForegroundColorSpan yellowSpan = new ForegroundColorSpan(Color.YELLOW);String[] array = { "word", "tell", "me", "hhe", "wo", "heihei","shuia", "ui" };int[] score = { 90, 59, 90, 12, 22, 61, 11, 79 };SpannableStringBuilder builder1 = new SpannableStringBuilder("");int start = 0;int end = 0;for (int i = 0; i < array.length; i++) {start = builder1.length();builder1.append(array[i] + " ");//添加你的字符串end = builder1.length();if (score[i] > 60) {builder1.setSpan(new ForegroundColorSpan(Color.GREEN), start,end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);} else {builder1.setSpan(new ForegroundColorSpan(Color.RED), start,end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);}}mTextView.setText(builder1);}





更多相关文章

  1. Android自定View流式布局根据文字数量换行
  2. Android(安卓)ConstraintLayout 降低布局层次,布局优化首选
  3. Android(安卓)Studio使用.so库的方式(科大飞讯为例)
  4. android TextView控件文字下划线
  5. android TextView 设置部分文字背景色和文字颜色
  6. Android(安卓)动画实现
  7. Android之Menu动态改变文字
  8. Android中悬浮窗口的实现
  9. Android自定义属性时format选项( )

随机推荐

  1. 教你怎么做可以换皮肤的软件
  2. Android(安卓)Studio编译问题-Error:Coul
  3. Why I got an empty folder after "git c
  4. 使用ARouter 时 提示 There is no route
  5. Android(安卓)- JNI加入标准C++文件
  6. Android子线程不可以刷新UI么?
  7. PackageInstaller 原理简述
  8. Android(安卓)UI之Notification
  9. 错误记录seterror的文字不显示
  10. Android实用插件,持续更新