今天在写代码时遇到这样的需求,就是在同一个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)是不行的。以前没有注意过,算是一个小坑。
网友评论