Обработка динамической текстовой строки Android в res/values
Скажем, у меня есть эта строка:
У вашего игрока есть умение хорошего и умение достойное
Теперь часть, не выделенная жирным шрифтом, всегда одна и та же, что известно во время выполнения, является выделенной жирным шрифтом.
Итак, как я мог сделать что-то вроде:
У вашего игрока есть навык {var1} и умение {var2} людей
а затем заполнить эти vars во время выполнения с правильными значениями?
Я не хочу конкатенировать строки, например:
"You player has a" + var1 + "keeper skill and a" + var2 + "people skill"
Ответы
Ответ 1
Вам нужно увидеть руководство по использованию файлов Android. Существует способ предоставления статической строки, которая может быть позже отформатирована с помощью переменных.
http://developer.android.com/guide/topics/resources/string-resource.html#FormattingAndStyling
Вы определяете строку как
<resources>
<string name="welcome_messages">Hello, %1$s! You have <b>%2$d new messages</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 ));