更改资源字符串中的单词颜色

时间:2012-03-09 14:12:56

标签: android string android-widget

有没有在android中设置字符串资源的颜色?我的意思是,我知道我可以使用一些html标签来改变字符串样式(或子字符串),但没有发现任何改变颜色。我在stackoverflow中看到过其他解决方案,比如在设置文本之前将字符串传递给Html.fromHtml(字符串),但我想在字符串资源编辑器中执行此操作。有可能吗?

4 个答案:

答案 0 :(得分:20)

看起来this方法正在运行:

    <string name="some_text">this is <font fgcolor="#ffff0000">red</font></string>

答案 1 :(得分:11)

据我所知,这是不可能的。我会使用SpannableString来改变颜色。

    int colorBlue = getResources().getColor(R.color.blue);
    String text = getString(R.string.text);
    SpannableString spannable = new SpannableString(text);
    // here we set the color
    spannable.setSpan(new ForegroundColorSpan(colorBlue), 0, text.length(), 0);

Spannable非常好。您可以将think设置为fontseize和stuff,并将其附加到文本视图中。优点是您可以在一个视图中使用不同的颜色。

编辑:好的,如果您只想设置上面提到的解决方案,那么我就可以了。

答案 2 :(得分:0)

字符串本身没有颜色,但您可以更改它们出现的textView中文本的颜色。请参阅textview documentation,但有两种方法可以执行此操作。

XML

android:textColor

代码

setTextColor(int)

答案 3 :(得分:0)

我最近为这个问题提出了一个灵活的解决方案。它使我能够通过使用方法链轻松地向子串添加多个样式。它使用了SpannableString。如果要为某个子字符串指定颜色,可以使用ForegroundColorSpan。

public StyledString putColor(String subString, @ColorRes int colorRes){
    if(getStartEnd(subString)){
        int color = ColorUtil.getColor(context, colorRes);
        ForegroundColorSpan foregroundColorSpan = new ForegroundColorSpan(color);
        fullStringBuilder.setSpan(foregroundColorSpan, startingIndex, endingIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    }
    return this;
}

有关完整代码,请参阅gist