在res/values中处理Android动态文本字符串



假设我有这样一个字符串:

你的球员有良好的守门员技能和体面的人际技能

现在字符串中不加粗的部分总是相同的,在运行时知道的是加粗的部分。

那么我该怎么做呢?

你的球员有{var1}守门员技能和{var2}人员技能

然后在运行时用正确的值填充这些变量?

我不想连接这样的字符串:

"You player has a"  + var1  + "keeper skill and a"  + var2 + "people skill"

您需要查看Android字符串资源指南。有一种方法可以提供静态字符串,以后可以用变量格式化。

http://developer.android.com/guide/topics/resources/string-resource.html FormattingAndStyling

您将定义像

这样的字符串
<resources>
  <string name="welcome_messages">Hello, %1$s! You have &lt;b>%2$d new messages&lt;/b>.</string>
</resources>

在后面的代码中你可以替换

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

in Strings.xml

You player has a %1$d  keeper skill and a %2$d people skill
在java中

getString(R.string.article_stats, var1, var2);

是,参见android devguide

如果您需要使用String.format(String, Object...)格式化字符串,那么您可以通过将格式参数放在字符串资源中来实现。例如,使用以下资源:

<string name="welcome_messages">Hello, %1$s! You have %2$d new messages.</string>

在这个例子中,格式字符串有两个参数:%1$s是一个字符串,%2$d是一个十进制数。您可以使用应用程序中的参数格式化字符串,如下所示:

Resources res = getResources();
String text = String.format(
    res.getString(R.string.welcome_messages),
    username, mailCount);

在strings xml中,你必须在CDATA标签中定义html语法,如

<![CDATA[<b> %1$s bought </b>, last purchased from %2$s <b> %3$s </b>]]>

和Java类

String detail =  String.format(getString(R.string.detail),15,"New Delhi","23 mins ago");
        detailView.setText(Html.fromHtml(detail ));

最新更新