Подтвердить что ты не робот

Обработка динамической текстовой строки Android в res/values

Скажем, у меня есть эта строка:

У вашего игрока есть умение хорошего и умение достойное

Теперь часть, не выделенная жирным шрифтом, всегда одна и та же, что известно во время выполнения, является выделенной жирным шрифтом.

Итак, как я мог сделать что-то вроде:

У вашего игрока есть навык {var1} и умение {var2} людей

а затем заполнить эти vars во время выполнения с правильными значениями?

Я не хочу конкатенировать строки, например:

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

Ответ 1

Вам нужно увидеть руководство по использованию файлов 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);

Ответ 2

в Strings.xml

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

в java

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

Ответ 3

Да, см. следующее из 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);

Ответ 4

в строках xml вы определяете синтаксис html в теге CDATA, например

<![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 ));