Объединять строковые ресурсы без потери форматирования HTML - PullRequest
0 голосов
/ 10 ноября 2011

Мне нужно поместить текст в формате HTML (простой материал, с несколькими маркерами <b>/</b> и <i>/</i>) в TextView. Мне нужно объединить три разных строки такого текста, каждая из которых хранится в строковом ресурсе, как показано в следующем коде.

(TextView) newText.setText(getString(R.string.textstr1) + getString(R.string.textstr2) + getString(R.string.textstr3));

Это не работает, потому что при объединении их в виде строк отбрасывается форматирование HTML.

Я попытался решить эту проблему, используя getText() вместо getString() и CharSequence.append (), но это также приводит к удалению HTML. Я пробовал различные варианты, используя HTML.fromHTML(), но ни один из них не работал. Разработчик Android представляет этот грубый подход, в котором вам нужно использовать экранированный HTML ( становится & lt; b> и т. Д.), Но для этого потребуется переформатировать все мои строковые ресурсы, и это вызовет у меня сомнения.

Кто-нибудь знает лучший способ сделать то, что я пытаюсь сделать?

Ответы [ 3 ]

2 голосов
/ 05 июля 2013

Метод getString устраняет теги HTML, но есть два доступных трюка:

  1. Использование & lt;и & gt;вместо <и>.Это помешает getString вырезать теги и все еще позволит Html.fromHtml () их анализировать.

Пример:

<string name="text">This is &lt;i&gt;italic&lt;/i&gt;</string>
  1. Использовать CDATA для переноса всей строки с помощьюHTML-теги.

Пример:

<string name="text"><![CDATA[This is <i>italic</i>]]></string>

В обоих случаях все, что вам нужно сделать, это просто установить текст.

yourTextView.setText(Html.fromHtml(getString(R.string.text)));

Если вы хотите ещепримеры проверок: http://android4beginners.com/2013/07/lesson-1-5-how-to-color-part-of-the-text-and-use-alpha-channel-in-textview/ (HTML-теги цвета шрифта в strings.xml)

0 голосов
/ 10 ноября 2011
(TextView) newText.setTextHtml.fromHtml((getString(R.string.textstr1) + getString(R.string.textstr2) + getString(R.string.textstr3)));
0 голосов
/ 10 ноября 2011

Попробуйте, надеюсь, это поможет ..

String newString=getString(R.string.textstr1) + getString(R.string.textstr2) + getString(R.string.textstr3);

newText.setText(Html.fromHtml(newString));
...