美文网首页
SpannableString改变字体颜色不起作用

SpannableString改变字体颜色不起作用

作者: 最爱最晴天 | 来源:发表于2020-06-23 15:56 被阅读0次

今天在写代码时遇到这样的需求,就是在同一个textview中需要显示两种不同的字体颜色,想到了使用系统自带的SpannableString 来实现,但是写完代码后却不起作用,代码如下:

String optionString = item.getQuestionOption();
String optionNum = "(" + number + "人" + ")";
SpannableString spannableString = new SpannableString(optionNum);
spannableString.setSpan(new ForegroundColorSpan(Color.parseColor("#FF0000")), 0, spannableString.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
 helper.setText(R.id.tv_name, optionString+spannableString);

后来经过反复测试后得以解决,正确代码:

  String optionString =  item.getQuestionOption();
  String optionNum = "(" + number + "人" + ")";
  String option=optionString+optionNum;
  SpannableString spannableString = new SpannableString(option);
  spannableString.setSpan(new ForegroundColorSpan(Color.parseColor("#FF0000")), optionNum.length(), spannableString.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
  helper.setText(R.id.tv_name, spannableString);

问题就在最后一行,即当使用spannableString时,最后textview.setText(spannableString)的时候,括号里面只能有spannableString才会起作用,如果是textview.setText(String+spannableString)是不行的。以前没有注意过,算是一个小坑。

相关文章