首先 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
自己处理标签
但是为了兼容低版本,我们还不能使用这个方法。所以只能自己解析转换,可以用正则匹配把一些不支持的 Tag 转为支持的 Tag,或转为原生控件添加到 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));