2011-10-31 37 views
2

在我傳遞給Html.fromHtml()TagHandler內,我想將一些格式化文本附加到給定的Editable output對象,然後傳遞給TextViewAndroid:如何將格式化文本附加到android.text.Editable?

添加純文本與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

你應該可以使用Html.fromHtmlEditable.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()調用 - 參見在開發者網站的"Selecting, Highlighting, or Styling Portions of Text" example

1

如果我明白你的問題就在這裏是一個辦法做到這一點

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

答案來自一個類似的問題here被複制。

+0

我想追加格式化文本到android.text.Editable,而不是HTML字符串。 – Witek

相關問題