第一种:加载完整正常html
我是在TextView显示网页上的内容的。
一般显示网址上的内容,都是类似于<fron ...... />的Html内容。
如果仅仅是显示的文字类型的html信息,那么直接使用Android提供的html转换方法就可以了。
info.setText(Html.fromHtml(“你要转换的数据”));
如果是文字加图片的形式,这种方式就不行了。也有另外一种称呼:富文本
比如:
<img src="http://wh.zhuaihu.com/data/upload/shop/store/goods/3/580572904_1280.jpg">(图片为错误图片打不开的)
这就是后台给我返的信息,总不能傻傻的去截取吧。
build配置:
compile 'com.zzhoujay.richtext:richtext:2.4.7'
使用方法:
String info_txt = "";
info.setMovementMethod(LinkMovementMethod.getInstance());
RichText.fromHtml(info_txt).into(info);
效果图:
第二种:加载html代码片段
类似于后台截取的一部分html代码:
</script><p><span style="color: rgb(51, 51, 51); font-family: "Microsoft Yahei"; font-size: 15px; background-color: rgb(255, 255, 255);">富文本内容</span></p >
只需要添加html头尾拼接即可:
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:100%; height:auto;}*{margin:0px;}</style>"
+ "</head>";
return "<html>" + head + "<body>" + bodyHTML + "</body></html>";
}
另有后台数据,数据经过转义,需要进行再次处理:
<p><span style="color: rgb(51, 51, 51); font-family: "Microsoft Yahei"; font-size: 15px; background-color: rgb(255, 255, 255);">本课程详细讲解轻奢风格短发裁剪技术、短发修饰、打薄技巧!</span></p>
需要进行转义替换处理:
if(content.contains("&")){
content = content.replace("'", "'");
content = content.replace(""", "\"");
content = content.replace("<", "<");
content =content.replace(">", ">");
content =content.replace("&", "&");
}
完整代码:
WebSettings settings = webView.getSettings();
// 设置WebView支持JavaScript
settings.setJavaScriptEnabled(true);
//支持自动适配
settings.setUseWideViewPort(true);
settings.setLoadWithOverviewMode(true);
settings.setSupportZoom(true); //支持放大缩小
settings.setBuiltInZoomControls(true); //显示缩放按钮
settings.setBlockNetworkImage(true);// 把图片加载放在最后来加载渲染
settings.setAllowFileAccess(true); // 允许访问文件
settings.setSaveFormData(true);
settings.setGeolocationEnabled(true);
settings.setDomStorageEnabled(true);
settings.setJavaScriptCanOpenWindowsAutomatically(true);/// 支持通过JS打开新窗口
settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
//设置不让其跳转浏览器
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return false;
}
});
// 添加客户端支持
webView.setWebChromeClient(new WebChromeClient());
// mWebView.loadUrl(TEXTURL);
//不加这个图片显示不出来
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
webView.getSettings().setBlockNetworkImage(false);
//允许cookie 不然有的网站无法登陆
CookieManager mCookieManager = CookieManager.getInstance();
mCookieManager.setAcceptCookie(true);
mCookieManager.setAcceptThirdPartyCookies(webView, true);
String content = "<p><span style="color: rgb(51, 51, 51); font-family: "Microsoft Yahei"; font-size: 15px; background-color: rgb(255, 255, 255);">富文本内容</span></p>";
if(content.contains("&")){
content = content.replace("'", "'");
content = content.replace(""", "\"");
content = content.replace("<", "<");
content =content.replace(">", ">");
content =content.replace("&", "&");
}
webView.loadDataWithBaseURL(null,getHtmlData(content),"text/html","utf-8", null);
SOAlone邀请您访问安卓巴士 - 安卓开发 - Android开发 - 安卓 - 移动互联网门户
http://www.apkbus.com/?fromuser=SOAlone