更改资源string中的单词颜色

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

  • 如何正确编辑阿拉伯文string?
  • 更改TextView中一个单词的文本颜色
  • 这个格式string有什么问题?
  • android如何在java类中使用string资源
  • string到charsequence
  • Android Studio:错误:非法字符:'\ u2028'
  • 怎样才能最好地将StringBuilder转换为String ?
  • 如何比较两个CharSequences中的字符
  • 据我所知这是不可能的。 我将使用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; } 

    完整的代码见要点 。