在我的应用程序中,我想在strings.xml中定义一个看起来像这样的格式字符串(注意<b>...</b>
标记):
<string name="location"><b>Location:</b> %1$s</string>
Run Code Online (Sandbox Code Playgroud)
然后使用getString(int,Object ...)替换格式参数:
String formattedString = getString(R.string.location, "Edmonton, AB");
Run Code Online (Sandbox Code Playgroud)
这会产生一个值"Location: Edmonton, AB"
.我想得到一个值"<b>Location:</b> Edmonton, AB"
.
有没有办法在strings.xml中使用字符串格式,而不将其分成两个字符串?
Pau*_*rke 20
来自文档:
有时您可能希望创建一个样式化的文本资源,该资源也用作格式字符串.通常,这不起作用,因为String.format(String,Object ...)方法将从字符串中删除所有样式信息.解决这个问题的方法是使用转义实体编写HTML标记,然后在格式化之后使用fromHtml(String)恢复这些实体.
例如:
<resources>
<string name="welcome_messages">Hello, %1$s! You have <b>%2$d new messages</b>.</string>
</resources>
Run Code Online (Sandbox Code Playgroud)
确保转义您传入的文本 String.format()
String escapedUsername = TextUtils.htmlEncode(username);
Resources res = getResources();
String text = String.format(res.getString(R.string.welcome_messages), escapedUsername, mailCount);
CharSequence styledText = Html.fromHtml(text);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12305 次 |
最近记录: |