我需要帮助将下一个字符串资源的颜色显示到textview
<string name="colored">
<b>Something working perfectly</b>
<font color="#F38">Something that doesn't work</font>
</string>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/colored"
/>
答案 0 :(得分:3)
您必须以编程方式设置它,如下所示:
((TextView)findViewById(R.id.yourTextViewId)).setText(Html.fromHtml(getResources().getString(R.string. colored)));
XML:
<TextView android:id="@+id/yourTextViewId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
string.xml:
<string name="colored"><![CDATA[
<b>Something working perfectly</b>
<font color="#F38">Something that doesn't work</font>
]]></string>
答案 1 :(得分:3)
字体颜色标记在Android中的字符串资源中无法正常工作。这是因为以“#AARRGGBB”等格式解析颜色的问题。它使用Integer.parseInt(source,16)来解析它(在com.android.internal.util.XmlUtils.convertValueToInt()方法中),它只接受signed int(所以你可以使用从#7FFFFFFF到#-7FFFFFFF的范围) )。 基本上使用Long.parse()代替Color.parse(),然后只使用整数。
此外,您不能使用自己的颜色资源作为字符串中字体颜色的引用,因为它使用System.getResources()方法来查找颜色资源。所以只有“android:color / [colorname]”才有效。
总之,在font标签中你可以:
<font color='@android:color/red'>Hello world!</font>
<font color='red'>Hello world!</font>
<font color='#-0000FF00'>Hello world!</font>
,其中#-0000FF00就像#FFFF0100 <![CDATA[<font color='#FFFF0000'>Hello world!</font>]]>
答案 2 :(得分:0)
为什么不在资源文件中定义颜色,然后在布局文件中使用它?
您可以通过在colors.xml文件(位于values文件夹中)定义类似的内容来实现此目的:
<color name="black">#000000</color>
然后在你的布局(xml)
android:textColor="@color/black"