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