更改资源string中的单词颜色

有无论如何设置Android的string资源的颜色? 我的意思是,我知道我可以使用一些HTML标签来改变string样式(或子string),但没有发现任何改变颜色。 我已经在这里看到了其他的解决scheme,像设置文本之前,将string传递给Html.fromHtml(string),但我想在string资源编辑器中。 任何可能性?

Solutions Collecting From Web of "更改资源string中的单词颜色"

据我所知这是不可能的。 我将使用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真的很好。 你可以设置认为像fontseize和那里的东西,只是将其附加到文本视图。 好处是你可以在一个视图中有不同的颜色。

编辑:好吧,如果你只想设置颜色上面提到的解决scheme是要走的路。

看起来像这个方法正在工作:

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

string本身没有颜色,但是你可以改变它们出现在textView中的文本的颜色。参见textview文档 ,但有两种方法可以做到这一点。

XML

 android:textColor 

 setTextColor(int) 

我最近为这个问题做了一个灵活的解决scheme。 它使我能够通过使用方法链来轻松地将多个样式添加到子string中。 它使用SpannableString。 当你想给某个子string一个颜色时,可以使用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; } 

完整的代码见要点 。