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标签的完整string
使用XML CDATA
<string name="demoStr"><Data><![CDATA[ <b>ABC</b> ]]> </Data></string>
getString()会得到"<b>ABC</b>"
将<用<
<string name="myHeadStr"><b><u>bold, underline </u></b></string>
然后,当检索:
Html.fromHtml(getResources().getString(R.string.myHeadStr));
这是android文档中规定的方式。 请阅读以下链接:“HTML标记样式”: http : //developer.android.com/guide/topics/resources/string-resource.html
我遇到了同样的问题,试图在我的rescources中存储完整的html页面。 我最终通过改变三件事来解决问题:
- “string”节点需要将“格式化”属性设置为false 。
- 存储的html页面需要被包装在一个CData节点中。
- 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>
直接将string资源ID传递给setText()
或者使用没有Html.fromHtml()
Context.getText()
Html.fromHtml()
可以正常工作,但传入Context.getString()
的结果不会。
例如:
strings.xml
:
<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