如何更改strings.xml中存储的字符串中某些单词的颜色?

时间:2015-07-06 17:45:21

标签: android string colors

我找到了一些关于如何更改存储在strings.xml中的字符串的特定字符和单词的颜色的解决方案,但是,它对我不起作用。我有以下字符串

<string name="my_string">
       Humpty Dumpty sat on a <font fgcolor="#FF0000">wall</font> Humpty Dumpty had a great <font fgcolor="#FF0000">fall</font></string>

我期待着墙壁和秋天的颜色是#FF0000(红色)的颜色,然而,它们根本不显示。经过进一步的研究,我了解到你必须声明alpha通道,然后我将我的字符串更新为

<string name="my_string">
       Humpty Dumpty sat on a <font fgcolor="#FFFF0000">wall</font> Humpty Dumpty had a great <font fgcolor="#FFFF0000">fall</font></string>

我声明的alpha通道完全不透明,但结果保持不变。

最后,我也尝试过使用CDDATA,这是我的尝试。

<string name="my_string"><![CDATA[
       Humpty Dumpty sat on a <font color=\'#FF0000\'>wall</font> Humpty Dumpty had a great <font color=\'#FF0000\'>fall</font>]]</string>

我还做错了什么?提前谢谢!

4 个答案:

答案 0 :(得分:5)

你想要使用这样的东西。

textView.setText(Html.fromHtml(getString(R.string.some_text)));

并且您的strings.xml应包含以下字符串。

<string name="some_text"><![CDATA[<font color=\'#cc0029\'>Some</font> random <font color=\'#ffcc00\'>text</font>]]></string>

查看here了解详情。

答案 1 :(得分:2)

在4.x之前,你可以这样做:

<string name="my_string">
   Humpty Dumpty sat on a <font fgcolor="#FFFF0000">wall</font>

然而,bug https://code.google.com/p/android/issues/detail?id=58192打破了这个功能,因为它引入了一个整数解析器,无法处理具有最高位设置的数字,不幸的是你不能省略颜色的不透明部分(大多数人都会我喜欢在这个例子中设置为ff。)

我昨天刚刚学会了巧妙的解决方法。你所做的是否定二进制补码中的十六进制颜色值。如何执行此操作取决于您的十六进制计算器,但最简单的方法是从0x100000000中减去颜色。在您的情况下,这将导致0x100000000 - 0xffff0000 = 0x10000。 (或者你可以反转它,例如足够接近的0000ffff)。然后用减号再次否定这一点:

<string name="my_string">
   Humpty Dumpty sat on a <font fgcolor="-#10000">wall</font>

和voilla!你有你想要的颜色。

感谢TWiStErRob在https://stackoverflow.com/a/11577658/338479

中搞清楚这一点

ETA:我刚刚发现如果你在2.x系统上这样做会导致你的应用程序崩溃;它抛出了一个NumberFormat异常。

答案 2 :(得分:0)

答案 3 :(得分:0)

在string.xml中,只需使用字体颜色属性

<string name="hello_world"><font color="#your_color_in_hexa"> Hello</font> world!</string>

以上代码将为文本的“Hello”部分着色