Android: как добавить форматированный текст в android.text.Editable? - PullRequest
2 голосов
/ 31 октября 2011

В пределах TagHandler, который я передал Html.fromHtml(), я хотел бы добавить некоторый форматированный текст к данному объекту Editable output, который затем передается в TextView.

Добавление простоготекст с output.append("my text") работает нормально.Но как добавить красный или курсивный текст?

class MyTagHandler implements Html.TagHandler {

  @Override
  public void handleTag(boolean opening, String tag, Editable output, XMLReader xmlReader) {
    output.append("my text");
    // how to append red and italic text here ?
  }

}

Ответы [ 2 ]

2 голосов
/ 04 ноября 2011

Вы должны быть в состоянии использовать Html.fromHtml и Editable.setSpan(), чтобы сделать это. Вот пример кода:

    appendFormatted(output, "<font color=red><i>red italic</i></font>");
}

private void appendFormatted(Editable text, String string) {
    final int start = text.length();
    final Spanned span = Html.fromHtml(string);
    text.append(span);
    final int end = text.length();
    for (final Object o : span.getSpans(0, span.length(), Object.class)) {
        text.setSpan(o, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    }
}

Если вам просто нужно применить простое форматирование, вы можете передать конкретный CharacterStyle производный объект вызову Editable.setSpan() - см. "Выбор, выделение или стилизация частей текста * пример на сайте разработчиков.

1 голос
/ 31 октября 2011

Если я понял ваш вопрос, вот способ сделать это

mBox = new TextView(context);
mBox.setText(Html.fromHtml("<b>" + title + "</b>" +  "<br />" + 
            "<small>" + description + "</small>" + "<br />" + 
            "<small>" + DateAdded + "</small>"));

Ответ был скопирован с аналогичного вопроса здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...