设备HTC D816D,HTC D816W上的android html字体颜色NumberFormatException

时间:2015-03-11 09:40:29

标签: android html

我向android中的textview显示html。大部分设备都很顺利。但是在HTC D816D,HTC D816W上,我收到了这个错误:

Caused by: java.lang.NumberFormatException: Invalid long: "red"
at java.lang.Long.invalidLong(Long.java:124)
at java.lang.Long.parse(Long.java:361)
at java.lang.Long.parseLong(Long.java:352)
at com.android.internal.util.XmlUtils.parseUnsignedIntAttribute(XmlUtils.java:160)
at com.android.internal.util.XmlUtils.convertValueToUnsignedInt(XmlUtils.java:130)
at android.content.res.StringBlock.getColor(StringBlock.java:346)
at android.content.res.StringBlock.applyStyles(StringBlock.java:252)
at android.content.res.StringBlock.get(StringBlock.java:135)
at android.content.res.AssetManager.getPooledString(AssetManager.java:314)
at android.content.res.TypedArray.loadStringValueAt(TypedArray.java:727)
at android.content.res.TypedArray.getText(TypedArray.java:97)
at android.widget.TextView.<init>(TextView.java:943)
at android.widget.TextView.<init>(TextView.java:669)

和html字符串就像:

<string name="hello_world">Hello world!<font color="red">Android</font></string>

问题是关键字color =“red”。有些设备无法解析此代码。我搜索了互联网,但一无所获。
1.如何处理这些特定设备在android中输入错误?
2.在textview中设置颜色值#ff0000而不是从html中设置一个常见的解决方案吗?

感谢。

1 个答案:

答案 0 :(得分:0)

我认为你不能在android资源字符串中使用和其他标签一样。它试图读取并解析您的html标记,但它失败了。您可以像html一样动态设置它

String s = "<font color=#ff0000>Android</font> <font color=#000000>something else</font>";`
tv.setText(Html.fromHtml(s));

此外,您可以使用Spannable

动态创建字符串
Spannable word = new SpannableString("Hello World! Android");        
 word.setSpan(new ForegroundColorSpan(Color.RED), 14, word.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);