Подтвердить что ты не робот

Android string.xml чтение html тегов проблема

В Android файле проекта strings.xml у меня есть следующий текст 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

4b9b3361

Ответ 1

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

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

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

Ответ 2

Заменить < с <

<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

Ответ 3

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

  • "string" node должен установить для атрибута "formatted" значение false.
  • сохраненная страница html должна быть завернута в CData node.
  • страница 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>

Ответ 4

Непосредственная передача идентификатора строкового ресурса в 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