字符标记不起作用的字符串资源

时间:2014-02-26 14:02:59

标签: android html string

我需要帮助将下一个字符串资源的颜色显示到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"
/>

3 个答案:

答案 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标签中你可以:

  1. 使用Android系统颜色作为<font color='@android:color/red'>Hello world!</font>
  2. 等参考
  3. 使用<font color='red'>Hello world!</font>
  4. 等基本颜色
  5. 使用有符号整数,这很痛苦,因为您需要将负值转换为不明显的格式,例如<font color='#-0000FF00'>Hello world!</font>,其中#-0000FF00就像#FFFF0100
  6. 在运行时使用Html.fromHtml()方法来解析包含CDATA标记的类似HTML的字符串,如<![CDATA[<font color='#FFFF0000'>Hello world!</font>]]>

答案 2 :(得分:0)

为什么不在资源文件中定义颜色,然后在布局文件中使用它?

您可以通过在colors.xml文件(位于values文件夹中)定义类似的内容来实现此目的:

<color name="black">#000000</color> 

然后在你的布局(xml)

android:textColor="@color/black"