string.xml中的粗体字符未显示在屏幕上

Tho*_*hen 9 xml android string-formatting

在我的string.xml文件中,我有这样的事情:

<string name="example_string"><b>This</b> is a <b>%1$s</b></string>
Run Code Online (Sandbox Code Playgroud)

然后我把它放到TextView中:

textView.setText(getString(R.string.example_string, "good question"));
Run Code Online (Sandbox Code Playgroud)

我传递给getString()方法的"好问题"参数未以粗体显示.甚至"This"这个词也没有以粗体显示!这是什么原因以及如何解决?

================================================== =======================

我知道如何使用Html.fromHtml(),但此方法不支持将字符串插入到我在字符串资源中定义的占位符.如果您试图告诉我Html.fromHtml()存在,请不要回复...

Tho*_*hen 14

经过一天的搜索,我在Android开发者网站上找到了理想的答案!该页面的链接位于:https://developer.android.com/guide/topics/resources/string-resource.html

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

基本上,我根据原来的问题做出的更改是用"HTML"标签替换括号"<",即"<"+";" (在xml文件中一起输入它们!我必须将它们分开,因为StackOverflow会将标记显示为括号本身.)有关更详细的说明,请参阅我在上面发布的网站上的带有HTML标记样式部分.


j2e*_*nue 8

我已经成功使用getText 而不是 getString。它似乎保持样式。

从文档:

您可以使用 getString(int) 或 getText(int) 来检索字符串。getText(int) 保留应用于字符串的任何富文本样式。


bid*_*h.r 7

您需要使用Html.fromHtml或使用SpannableString格式化文本。

Html.fromHtml例子:

textView.setText(Html.fromHtml(getString(R.string.example_string, "good question")));
Run Code Online (Sandbox Code Playgroud)

编辑:

如果您在传递标签时遇到问题,那是因为它需要通过 进行转义CDATA

例如。 <string name="example_string">This is a <![CDATA[<b>%1$s</b>]]></string>