Используйте HTML-теги с экранированными сущностями.
На ваш вопрос дан прямой ответ в официальной документации !
Иногда вы можетехотите создать стилизованный текстовый ресурс, который также используется в качестве строки формата.Обычно это не работает, потому что метод String.format(String, Object...)
удалит всю информацию о стиле из строки.Обходной путь к этому - записать теги HTML с экранированными сущностями , которые затем восстанавливаются с помощью fromHtml(String)
после форматирования.Например:
Сохраните текстовый ресурс в стиле в виде строки с экранированием HTML:
<resources>
<string name="welcome_messages">Hello, %1$s! You have <b>%2$d new messages</b>.</string>
</resources>
В этой отформатированной строке добавлен элемент <b>
.Обратите внимание, что открывающая скобка экранирована HTML, используя нотацию <
.Затем отформатируйте строку как обычно, но также вызовите fromHtml(String)
, чтобы преобразовать текст HTML в стилизованный текст:
Resources res = getResources();
String text = String.format(res.getString(R.string.welcome_messages), username, mailCount);
CharSequence styledText = Html.fromHtml(text);