首先 TextView 是不支持 HTML 標簽和樣式的,只支持一些固定的標簽和樣式
之所以不使用 webview 是因為 webview 太重了,而我有好多個 TextView 后臺返回的都是簡單的 HTML
最好讓后臺同事只返回 TextView 支持的標簽,畢竟 TextView 不是 WebView, TexView 只支持簡單的固定標簽
android7.0( api level 24 ) 有一個方法可以自己處理標簽
public static Spanned fromHtml(String source, int flags, ImageGetter imageGetter,
TagHandler tagHandler)
可通過 ImageGetter
和 TagHandler
自己處理標簽
但是為了兼容低版本,我們還不能使用這個方法。所以只能自己解析轉(zhuǎn)換,可以用正則匹配把一些不支持的 Tag 轉(zhuǎn)為支持的 Tag,或轉(zhuǎn)為原生控件添加到 View 中。
String s = "<table><tr><td>col1</td><td>col2</td></tr><tr><td>col3</td><td>col4</td></tr></table>";
s = s.replaceAll("<table>", "");
s = s.replaceAll("</table>", "");
s = s.replaceAll("<tr>", "");
s = s.replaceAll("</tr>", "<br/>");
s = s.replaceAll("<td>", " ");
s = s.replaceAll("</td>", " ");
textView.setText(Html.fromHtml(s));