我有一部分代码在一个对象上调用toString,而toString基本上会吐出将在屏幕上显示的字符串。
我想改变字符串一部分的颜色。
我刚试过这样的事情:
String coloredString = solutionTopicName + " (" + commentCount + ")";
Spannable sb = new SpannableString( coloredString );
ForegroundColorSpan fcs = new ForegroundColorSpan(Color.rgb(140, 145, 160));
sb.setSpan(new ForegroundColorSpan(Color.BLUE), solutionTopicName.length(), solutionTopicName.length()+3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
return sb.toString();
但我仍然看到相同的颜色没有变化。
谢谢!
答案 0 :(得分:2)
使用Spannable来做到这一点。
setSpan()
将完成这项工作。
Spannable mString = new SpannableString("multi color string ");
mString.setSpan(new ForegroundColorSpan(Color.BLUE), 5, 7, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
更新
String coloredString = " (" + solutionTopicName + commentCount + ")";
Spannable sb = new SpannableString( coloredString );
ForegroundColorSpan fcs = new ForegroundColorSpan(Color.rgb(140, 145, 160));
sb.setSpan(new ForegroundColorSpan(Color.BLUE), solutionTopicName.length(), solutionTopicName.length()+3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
//textView.setText(sb);
return sb;
最新:
String solutionTopicName= "Hello";
String commentCount= "hi how are you";
String coloredString = solutionTopicName+"(" + commentCount + ")";
Spannable sb = new SpannableString( coloredString );
sb.setSpan(new ForegroundColorSpan(Color.BLUE), coloredString.indexOf("("), coloredString.indexOf(")")+1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
mTextView.setText(sb);
答案 1 :(得分:1)
I would like to change the color of one part of the string. Is that at all possible?
是的,你可以改变字符串特定部分的颜色。您可以使用SpannableStringBuilder
课程。
你可以做这样的事。
SpannableStringBuilder sb = new SpannableStringBuilder("This is your String");
ForegroundColorSpan fcs = new ForegroundColorSpan(Color.rgb(140, 145, 160));
sb.setSpan(fcs, 0, 10, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
textView.setText(sb);
这里是setpan方法的定义。
setSpan(Object what, int start, int end, int flags)
Mark the specified range of text with the specified object.
setSpan
方法将索引作为参数和Object
类的实例。所以任何类的实例都可以作为参数传递,具体取决于您的要求。我们使用ForegroundColorSpan
的实例来改变文本的颜色。您可以传递Clickable
实例以使字符串的某些部分可单击。