我找到了一些关于如何更改存储在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>
我还做错了什么?提前谢谢!
答案 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)
您可以选择使用Spannable
http://developer.android.com/reference/android/text/Spannable.html
答案 3 :(得分:0)
在string.xml中,只需使用字体颜色属性
<string name="hello_world"><font color="#your_color_in_hexa"> Hello</font> world!</string>
以上代码将为文本的“Hello”部分着色