安卓加载html代码片段

来源:互联网 发布:大数据培训班心得体会 编辑:程序博客网 时间:2024/05/05 10:33

我们在做项目的时候,有时候后台会直接给你返回一段html的代码片段,即后台没有处理过的富文本信息。以前的解决方式是让后台将其生成一个静态网页 ,用webView进行展示,这样子本身就是一个错误的选择,现在PASS。

正确的解决方式网上流传着4个版本。

第一个 :直接使用第三方富文本加载器进行加载。

第二个:使用TextView进行加载---有缺点:当显示的富文本信息的图片路径不全时,加载失败。

第三种:使用jsoup进行解析后添加属性,然后用webView进行加载。

第四种:直接添加头部,然后用webView进行加载。

这四种方式基本都试了一变,发现第一种必须找到好的开源项目,由于时间比较紧张,故而放弃了没有再研究。第二种已经说了,不在累述。

我们直接讲第三种


第三种

项目需要关联jsoup    

使用文档:

http://www.open-open.com/jsoup/parse-body-fragment.htm

接下来直接上代码吧

public String jsoup(String str) {    Document doc = (Document) Jsoup.parse(str);    Elements Img = doc.getElementsByTag("img");  //从一段富文本信息中找到所有图片    Elements p = doc.getElementsByTag("p"); //从一段富文本信息中找到所有文字    if (Img.size() != 0) {        for (Element e_Img : Img) {            e_Img.attr("width", "100%");//设置图片的宽为100%,高度自适应            e_Img.attr("height", "auto");        }    }    if (p.size() != 0) {        for (Element e_p : p) {            Log.e("xiaoma", e_p.toString());            e_p.attr("style", "font-size:40px"); //设置字体的大小        }    }    return doc.toString();}
然后使用webView进行解析就好了。但是这种方式只适用于4.4急以后,再4.3上会出现webView无限下滑的事情。。如何解决?4.4以后这样做,4.3之前,直接用webView直接加载富文本信息。

第四种解决方式:

private String getHtmlData(String bodyHTML) {    String head = "<head>" +            "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=no\"> " +            "<style>img{max-width: 100%; width:auto; height:auto;}</style>" +            "</head>";    return "<html>" + head + "<body>" + bodyHTML + "</body></html>";}
目前来说第四种是官方给出的最优解决办法。

最后给出webview进行加载即可。

webView.loadData(str, "text/html; charset=UTF-8", null);

这种方式目前在小米,华为和 三星身上没有发现问题。。

这是我第一次写博客,也只是借鉴的前辈的方法。在此进行感谢。

博客我会继续写下去的。。大家共勉。我是小马。谢谢




0 0
原创粉丝点击