0

我有带有格式参数%s 的字符串资源

<string name="string_name">Hello Mr. %s. I want to ...</string>

此字符串资源已本地化,因此根据语言环境具有不同的长度,并且必须在一个 TextView 中

我想将formatArg %s设为粗体

我试过html标签 <string name="string_name">Hello Mr. <b>%s</b>. I want to ...</string>

我试过注释标签 <string name="string_name">Hello Mr. <annotation style="bold">%s</annotation>. I want to ...</string>

我创建了 SpannableString 并尝试将 Span 设置为此注释

在我将文本设置为 TextView 后,对字符串参数没有任何影响

tvDescription.setText(getString(R.string.string_name, "formatArg"));

有没有办法为格式化字符串资源中的字符串参数设置样式?

4

1 回答 1

2

这就是我设置 AlertDialog 消息的样式:

Spanned htmlAsSpanned = Html.fromHtml("Some html tags are working in here<br /><br />
<b>this is bold text</b>");

编辑:或者就是你正在寻找的。他们的例子是这样的:

String text = getString(R.string.welcome_messages, "Roko Spark", 5);
Spanned styledText = Html.fromHtml(text);

textView.setText(styledText);

在此格式化字符串中,<b>添加了一个元素。请注意,左括号是 HTML 转义的,使用&lt;符号。

<string name="welcome_messages">Hello, %1$s! You have &lt;b>%2$d new messages&lt;/b>.</string>
于 2020-04-28T13:34:54.257 回答