今天发现项目里消息列表显示异常,多了很多\r和空行,调试发现是因为TextView控件不支持div标签,于是决定使用WebView替代TextView。
使用WebView显示内容
参考这篇文章使用WebView
webView.loadData("<html><body>"+strIFrame+"</body></html>", "text/html", "utf-8");
遇到的第一个问题是xml中添加WebView提示父控件高度不能是wrap_content,于是改成match_parent。
\r的问题可以通过替换成空字符解决。
乱码问题解决
第二个问题是乱码问题,通过这篇文章得到解决,方法如下:
webView.getSettings().setDefaultTextEncodingName("UTF -8");//设置默认为utf-8
webView.loadData(data, "text/html; charset=UTF-8", null);//这种写法可以正确解码
这样就大功告成了,效果非常好。
最终代码如下(body里的text是字体颜色):
webView.getSettings().setDefaultTextEncodingName("UTF -8");
webView.loadData("<html><body text=\"#494949\">" + message.getContent().replace("\\r", "") + "</body></html>",
"text/html; charset=UTF-8", null);
缺点
缺点是性能差,会导致页面加载的动画卡顿。