0

我有一部分代码在对象上调用 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();   

但我仍然看到相同的颜色没有变化。

谢谢!

4

2 回答 2

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);
于 2012-05-19T05:44:18.850 回答
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);  

这是setspan方法的定义。

setSpan(Object what, int start, int end, int flags)
Mark the specified range of text with the specified object.  

setSpan方法将索引作为参数和ObjectClass 的实例。因此任何类的实例都可以根据您的要求作为参数传入。我们使用实例ForegroundColorSpan来改变文本的颜色。您可以传递Clickable实例以使字符串的某些部分可点击。

于 2012-05-19T05:46:45.933 回答