android string.xml读取html标签问题

在Android项目的strings.xml文件中,我有以下HTML文本

<?xml version="1.0" encoding="utf-8"?>

<resources>

<string name="myHeadStr"><b><u>bold, underline </u></b></string>
...

</resources>

当我将其读入getString(R.string.myHeadStr)时,它仅给出文本“粗体,下划线”,它会忘记html标记和...。

如何从string.xml中读取带有html标记的完整字符串

d-man asked 2020-02-29T10:06:58Z
4个解决方案
107 votes

使用XML CDATA

<string name="demoStr"><Data><![CDATA[ <b>ABC</b> ]]> </Data></string>

getString()将获得"<b>ABC</b>"

meizilp answered 2020-02-29T10:07:16Z
36 votes

用<替换<

<string name="myHeadStr">&lt;b>&lt;u>bold, underline &lt;/u>&lt;/b></string>

然后,在检索时:

Html.fromHtml(getResources().getString(R.string.myHeadStr));

这是android文档中规定的操作方式。阅读此链接中标题为“使用HTML标记的样式”的段落:[http://developer.android.com/guide/topics/resources/string-resource.html]

Sarwar Erfan answered 2020-02-29T10:07:45Z
8 votes

直接将字符串资源id传递给Activity.java或使用不带276879735161461212482的Context.getText()可以正常工作,但不能传递Context.getString()的结果。

例如:

Activity.java:

<resources>
    <string name="html">This is <b>bold</b> and this is <i>italic</i>.</string>
<resources>

Activity.java文件中的代码:

textView.setText(R.string.html); // this will properly format the text
textView.setText(getText(R.string.html)); // this will properly format the text
textView.setText(getString(R.string.html)); // this will ignore the formatting tags
Abtin Gramian answered 2020-02-29T10:08:20Z
1 votes

我试图在我的资源中存储完整的html页面时遇到了同样的问题。我终于通过更改三件事解决了这个问题:

  1. “字符串”节点需要将“格式化”属性设置为false。
  2. 存储的html页面需要包装在CData节点中。
  3. html页面不允许包含撇号!

最后一个实际上是我的主要问题。所以这是我的strings.xml,其中包含“正确”存储的html页面。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="error_html" formatted="false" ><![CDATA[<html><head><link name="icon1" href="favicon.ico" rel="SHORTCUT ICON" /><title>Error</title><style>html, body {margin: 0;padding: 0;background: #3f0000;color: white;font-family: Arial;}#MainLink {position: relative;background: #7f0000;margin: 10px;text-decoration: none;border: 1px solid #9f0000;-webkit-border-radius: 10px;-moz-border-radius: 10px;border-radius: 10px;-webkit-box-shadow: 5px 5px 5px 0px rgba(0,0,0,0.5);-moz-box-shadow: 5px 5px 5px 0px rgba(0,0,0,0.5);box-shadow: 5px 5px 5px 0px rgba(0,0,0,0.5);}#MainLink {width: 462px;height: 220px;}#MainLink td {font-size: 20px;}#MainLink span {text-decoration: underline;font-weight: bold;font-size: 40px;}</style></head><body><table width="100%" height="100%" cellpadding="0" cellspacing="0"><tr><td align="center" valign="middle"><table cellpadding="0" cellspacing="0"><tr><td colspan="2" id="MainLink" align="center"><big><big><b>Error</b></big></big></td></tr></table></td></tr></table></body></html>]]></string>
</resources>
Phillip answered 2020-02-29T10:08:58Z
translate from https://stackoverflow.com:/questions/4637780/android-string-xml-reading-html-tags-problem