вторник, 11 октября 2011 г.

Отображение HTML

Показать на экране HTML текст с простой разметкой тривиальная задача:

String sampleHtml = "<b>Bold</b> <i>italic</i> normal";
TextView textView;

textView = findViewById(R.id.sampleTextView);
textView.setText(Html.fromHtml(sampleHtml));

В большинстве случаев этого оказывается достаточно, но не всегда.


Тонкость первая, о которой прямо написано в документации: класс android.text.Html поддерживает не все HTML теги. Точнее поддерживает всего пару десятков тегов. Вот их список для Android 2.1:

  • <a href="">
  • <b>
  • <big>
  • <blockquote>
  • <br>
  • <cite>
  • <dfn>
  • <div align="">
  • <em>
  • <font size="" color="" face="">
  • <h1> ... <h6>

  • <i>
  • <img src="">
  • <p>
  • <small>
  • <strike>
  • <strong>
  • <sub>
  • <sup>
  • <tt>
  • <u>


Тонкость вторая в том, что в большинстве версий Android тег <strong> отображается как курсив (тег <i>), а тег <em> как жирный (тег <b>). Чтобы избежать этого я использую следующий код:

String sampleHtml = "<strong>Bold</strong> normal";
String fixedHtml = sampleHtml.replace("<strong>", "<b>").replace("</strong>", "</b>");
//...
textView.setText(Html.fromHtml(fixedHtml));

Полезные ссылки:

Комментариев нет:

Отправить комментарий