Android string.xml проблема чтения HTML-тегов - PullRequest
45 голосов
/ 09 января 2011

В файле strings.xml проекта Android у меня следующий HTML-текст

<?xml version="1.0" encoding="utf-8"?>

<resources>

<string name="myHeadStr"><b><u>bold, underline </u></b></string>
...

</resources>

Когда я читаю это в getString (R.string.myHeadStr), он дает только текст "жирный, подчеркнутый", он забывает теги html и ....

как прочитать полную строку с HTML-тегами из string.xml

Ответы [ 4 ]

106 голосов
/ 09 января 2011

Использовать XML CDATA

<string name="demoStr"><Data><![CDATA[ <b>ABC</b> ]]> </Data></string>

getString () будет получено "<b>ABC</b>"

35 голосов
/ 09 января 2011

Замените <на <</p>

<string name="myHeadStr">&lt;b>&lt;u>bold, underline &lt;/u>&lt;/b></string>

Затем при получении:

Html.fromHtml(getResources().getString(R.string.myHeadStr));

Это предписанный способ выполнения в документации Android.Прочтите абзац под заголовком «Стиль с разметкой HTML» по этой ссылке: http://developer.android.com/guide/topics/resources/string-resource.html

6 голосов
/ 12 июля 2017

Непосредственная передача идентификатора строкового ресурса в setText() или использование Context.getText() без Html.fromHtml() работает правильно, но передача результата Context.getString() - нет.

например:

strings.xml:

<resources>
    <string name="html">This is <b>bold</b> and this is <i>italic</i>.</string>
<resources>

код в Activity.java файле:

textView.setText(R.string.html); // this will properly format the text
textView.setText(getText(R.string.html)); // this will properly format the text
textView.setText(getString(R.string.html)); // this will ignore the formatting tags
1 голос
/ 07 ноября 2014

Я столкнулся с той же проблемой, пытаясь сохранить полную страницу HTML в моих ресурсах. Я наконец решил проблему, изменив три вещи:

  1. узлу "string" необходимо установить атрибут "formatted" равным false .
  2. сохраненная html-страница должна быть обернута в узел CData.
  3. HTML-страница НЕ может содержать апострофы!

Последнее действительно было моей главной проблемой. Итак, вот мой strings.xml, содержащий «правильно» сохраненную HTML-страницу.

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="error_html" formatted="false" ><![CDATA[<html><head><link name="icon1" href="favicon.ico" rel="SHORTCUT ICON" /><title>Error</title><style>html, body {margin: 0;padding: 0;background: #3f0000;color: white;font-family: Arial;}#MainLink {position: relative;background: #7f0000;margin: 10px;text-decoration: none;border: 1px solid #9f0000;-webkit-border-radius: 10px;-moz-border-radius: 10px;border-radius: 10px;-webkit-box-shadow: 5px 5px 5px 0px rgba(0,0,0,0.5);-moz-box-shadow: 5px 5px 5px 0px rgba(0,0,0,0.5);box-shadow: 5px 5px 5px 0px rgba(0,0,0,0.5);}#MainLink {width: 462px;height: 220px;}#MainLink td {font-size: 20px;}#MainLink span {text-decoration: underline;font-weight: bold;font-size: 40px;}</style></head><body><table width="100%" height="100%" cellpadding="0" cellspacing="0"><tr><td align="center" valign="middle"><table cellpadding="0" cellspacing="0"><tr><td colspan="2" id="MainLink" align="center"><big><big><b>Error</b></big></big></td></tr></table></td></tr></table></body></html>]]></string>
</resources>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...