Я знаю, что могу помещать экранированные HTML-теги в строковые ресурсы. Однако, глядя на исходный код приложения «Контакты», я вижу, что у них есть способ избежать кодирования HTML. Цитата из приложения "Контакты" strings.xml :
<string name="contactsSyncPlug"><font fgcolor="#ffffffff">Sync your Google contacts!</font>
\nAfter syncing to your phone, your contacts will be available to you wherever you go.</string>
К сожалению, когда я пробую что-то подобное (например Hello, <b>World</b>!
), getString()
возвращает строку без тегов (я вижу это logcat
). Это почему? Как мне получить исходную строку с тегами и всем остальным? Как это делает приложение "Контакты"?
\"
в качествеstyle
собственности. Пример<a style=\"...\">link</a>
Кажется
getString()
, именно так - получает строку . Чтобы использовать это, вы должны использоватьgetText()
(и не болееHtml.fromHtml()
), то есть:Однако похоже, что
android:text
свойство делает то же самое, и следующее эквивалентно:И в
strings.xml
:источник
\n
?Лучшее решение - использовать ресурсы следующим образом:
а затем отобразить его с помощью:
Попробуйте использовать этот ресурс без
<![CDATA[ ]]>
и с ним,tv.setText(getText(R.string.htmlsource));
и вы увидите разницу.источник
Я знаю, что это старый вопрос, но, похоже, наиболее эффективного ответа пока нет.
Просто используйте
HTML-escaped
символы, чтобы они не обрабатывались,getString
но обрабатывалисьHtmlCompact.fromHtml
(или старшеHtml.fromHtml
).Это также поддерживает больше тегов, таких как HTML-ссылки и т. Д., А не только форматирование, например
getString
метод.Например, должно работать что-то вроде этого:
В вашем случае вы заменить
<
с ,<
как это:источник
у меня работает без блока CDATA.
Использую в верстке.
источник
Идея: поместить HTML в файлы в формате JSON и сохранить их в / res / raw. (JSON менее разборчив)
Сохраните такие записи данных в объекте массива:
Чтобы прочитать данные в вашем приложении:
Наконец,
Data
класс - это просто контейнер общедоступных переменных для легкого доступа ...источник