Поскольку верхний ответ здесь предполагает что-то неправильное (или, по крайней мере, слишком сложное), я чувствую, что это следует обновить, хотя вопрос довольно старый:
При использовании ресурсов String в Android вам просто нужно вызвать getString(...)
из кода Java или использовать android:text="@string/..."
в XML-коде макета.
Даже если вы хотите использовать разметку HTML в своих строках, вам не нужно много менять:
Единственные символы, которые вам нужно экранировать в ресурсах String:
- двойная кавычка:
"
становится \"
- одиночная кавычка:
'
становится \'
- амперсанд:
&
становится &
или &
Это означает, что вы можете добавить разметку HTML, не экранируя теги:
<string name="my_string"><b>Hello World!</b> This is an example.</string>
Однако, чтобы быть уверенным, вы должны использовать только <b>
, <i>
и <u>
, как они перечислены в документации.
Если вы хотите использовать HTML-строки из XML , просто продолжайте использовать android:text="@string/..."
, он будет работать нормально.
Единственное отличие состоит в том, что если вы хотите использовать свои строки HTML из кода Java , вам придется использовать getText(...)
вместо getString(...)
сейчас, поскольку первый сохраняет стиль, а второй просто скину.
Это так просто. Нет CDATA, нет Html.fromHtml(...)
.
Вам понадобится Html.fromHtml(...)
, только если вы действительно закодировали свои специальные символы в разметке HTML. Используйте это с getString(...)
тогда. Это может быть необходимо, если вы хотите передать строку в String.format(...)
.
Все это также описано в документации .
Edit:
Нет никакой разницы между getText(...)
с неэкранированным HTML (как я уже предлагал) или CDATA
разделами и Html.fromHtml(...)
.
См. Следующий график для сравнения: