Android:资源中的getString()丢失了字符串中的任何标记

Dan*_*ail 18 resources android

例如:

我在资源中有一个字符串:

<string name="smth"><small>hey girls</small></string>

当我在xml资源文件中使用它时(例如在某些文本视图中),

android:text="@string/smth"

没问题.它考虑了"小"标签.它使字符串更小.但是当我想像这样使用它时:

String smth = getString(R.string.smth);

someTextView.setText(Html.fromHtml(不便));

字符串没有任何标签!

任何帮助赞赏.担

Dhe*_*.S. 38

将HTML标记与转义实体一起使用.

您的问题直接在官方文档中解答!

有时您可能希望创建一个样式化的文本资源,该资源也用作格式字符串.通常,这不起作用,因为该 String.format(String, Object...)方法将从字符串中删除所有样式信息.解决这个问题的方法是使用转义实体编写HTML标记,然后fromHtml(String)在格式化后进行恢复 .例如:

将样式化文本资源存储为HTML转义字符串:

<resources>
  <string name="welcome_messages">Hello, %1$s! You have &lt;b>%2$d new messages&lt;/b>.</string>
</resources>
Run Code Online (Sandbox Code Playgroud)

在此格式化字符串中,<b>添加了一个元素.请注意,使用&lt;表示法对左括号进行HTML转义.然后像往常一样格式化字符串,但也调用fromHtml(String)将HTML文本转换为样式文本:

Resources res = getResources();
String text = String.format(res.getString(R.string.welcome_messages), username, mailCount);
CharSequence styledText = Html.fromHtml(text);
Run Code Online (Sandbox Code Playgroud)


Man*_*oba 11

为什么不尝试用相应的unicode字符替换'<','>'和'\'?

问候.

  • 是的,它有效...我认为它不会......该死的.谢谢! (2认同)
  • 为什么不把它放入CDATA部分? (2认同)

One*_*rld 7

有时只有unicode字符或 <![CDATA[ your HTML ]]>帮助,但没有引用Rajkiran建议.另请参阅如何使Resources.getStringArray在Android中使用HTML标记


Ash*_*rma 7

如果您不希望通过 getString() 删除 html 标签。您必须在字符串中添加和 [![CDATA]] 标记,例如:

<string name="get_string_with_Html_tags"><Data><![CDATA[ This is an example.
        <br><br>
        <font color=\'black\'>black text:
        </font>
        <br><br>
        <font color=\'red\'>red text</font>
        <br></br> ]]> </Data></string>
Run Code Online (Sandbox Code Playgroud)