字符串资源中用于在 android 中具有样式的字符串的参数

2022-09-04 21:20:28

我的字符串中有一个字符串.xml文件,例如

  <string name="my_text">Hello <b>$%1$s</b>, android is cool <b>bold me</b></string>

使用粗体样式检索文本的唯一方法是使用resources.getText(R.string.my_text);

虽然问题是getText没有为我希望提供的参数采取额外的参数,例如方法getString,它接受诸如resources.getString(R.string.my_text, "I WILL BE BOLDED")

如果我使用getString,我会失去粗体,如果我使用getText,我不能传递参数,我如何获得两者?


答案 1

要扩展 Sagar 的答案,请使用以下命令设置字符串资源:CDATA

<string name="test"><![CDATA[When no one was looking, Lex Luthor took <b>%s</b> cakes. He took %d cakes. That\'s as many as %s %s. And that\'s terrible.]]></string>

然后,检索字符串资源 using 和 use 来处理格式设置:getString()HtmlCompat

HtmlCompat.fromHtml(getString(R.string.test, "forty", 40, "four", "tens"), HtmlCompat.FROM_HTML_MODE_COMPACT)

注意:答案的作者既不能确认也不能否认在创建此答案时消耗了一定数量的蛋糕。但是,据您所知,没有涉及真正的超级恶棍。


答案 2

字符串.xml

<string name="my_text">Hello &lt;b>$%1$s &lt;/b>, android is cool &lt;b>bold me &lt;/b></string>

法典

String.format(res.getString(R.my_text.welcome_messages), "I WILL BE BOLDED");