Android Html.fromHtml (String) не работает для текста </font> - PullRequest
41 голосов
/ 19 июня 2011

Я пытаюсь добавить строки с разными цветами в мой TextView, используя HTML-теги.

По любой причине

    Html.fromHtml("<font color='#145A14'>text</font>");

не будет отображаться в TextView в цветном виде.*

Ответы [ 11 ]

51 голосов
/ 03 ноября 2012
Html.fromHtml("<font color='#145A14'>text</font>");

Вместо вышеуказанного, пожалуйста, используйте следующее

Html.fromHtml("<![CDATA[<font color='#145A14'>text</font>]]>");

Это сработало для меня, и я уверен, что это сработает и для вас.

Дайте мне знать, если возникнет какая-либо проблема.

23 голосов
/ 16 августа 2012

Мой ответ включает в себя догадки о вашем коде, но здесь идет речь:

Когда вы используете тег font: НЕ включайте альфа-канал, чтобы ваша шестнадцатеричная строка выглядела как "# ff123456".Если вы используете Integer.toHexString (), у вас будет альфа-канал с таким результатом.

Это сработало, когда я использовал substring (2) в моей шестнадцатеричной строке из rescource.

Подводя итог:

text.setText(Html.fromHtml("<font color='#123456'>text</font>"));

будет работать, но:

text.setText(Html.fromHtml("<font color='#ff123456'>text</font>"));

не будет!

20 голосов
/ 01 марта 2016

Обязательно отключите любые модификаторы, такие как:

android:textAllCaps="true"
5 голосов
/ 19 июня 2011

Метод fromHtml чрезвычайно ограничен с точки зрения поддерживаемых им тегов HTML, и шрифт не является одним из них.См. http://commonsware.com/blog/Android/2010/05/26/html-tags-supported-by-textview.html для неофициального списка.Я сам провел некоторые исследования по этому вопросу и обнаружил, что fromHtml основан на неясном и плохо документированном движке рендеринга.

4 голосов
/ 10 марта 2016

Я использую этот код

Html.fromHtml(convertToHtml("<font color='#145A14'>text</font>"));

public String convertToHtml(String htmlString) {

    StringBuilder stringBuilder = new StringBuilder();
    stringBuilder.append("<![CDATA[");
    stringBuilder.append(htmlString);
    stringBuilder.append("]]>");
    return stringBuilder.toString();
}
2 голосов
/ 18 апреля 2012
textView.setText(Html.fromHtml("<font color='blue'>text</font>"));
2 голосов
/ 19 июня 2011

Это выглядит как очень темный цвет, вы уверены, что ваш экран способен отображать такие цвета, чтобы вы могли отличить их от черного?Фрагмент кода выглядит хорошо, я пробовал подобный код много раз, и он работал как шарм.Попробуйте сделать это немного ярче, например, # ff0000 (красный), чтобы убедиться, что он работает:

TextView text = ... // find or instantinate your text view.
text.setText(Html.fromHtml("<font color='#ff0000'>text</font>"));
1 голос
/ 24 декабря 2015

Да, я согласен, иногда это не работает.

В качестве альтернативы я использую в XML для Textview:

android:textColorLink="yourColor"

работает как шарм;)

1 голос
/ 01 октября 2013

Убедитесь, что ваше значение RGB капитализировано. Android может понимать # 00FF00, но не # 00ff00.

1 голос
/ 19 июня 2011

попробуйте это и должно работать

 textView.setText(Html.fromHtml("<font color=\"#145A14\">text</font>"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...