WebView可加载带图片或者不带图片的HTML片段,代码如下:
布局代码
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:ignore="WebViewLayout" />
加载html片段方法(加载文字类)
/**
* 加载HTML片段
* @param html 片段
*/
private void setWebView(String html) {
if (!html.isEmpty()) {
//24以上Html.fromHtml(String source)已过时,以下可用
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
webView.loadData(Html.fromHtml(html,FROM_HTML_MODE_COMPACT).toString(), "text/html", "UTF-8");
} else {
webView.loadData(Html.fromHtml(html).toString(), "text/html", "UTF-8");
}
}
}
Flag 参数介绍
FROM_HTML_MODE_COMPACT:html块元素之间使用一个换行符分隔
FROM_HTML_MODE_LEGACY:html块元素之间使用两个换行符分隔
加载html片段方法(加载图文类)
/**
* 加载HTML片段(图文)
*
* @param html 片段
*/
@SuppressLint("SetJavaScriptEnabled")
private void setWebView(String html) {
webView.getSettings().setJavaScriptEnabled(true);
String varjs = "<script type='text/javascript'> \nwindow.onload = function()\n{var $img = document.getElementsByTagName('img');" +
"for(var p in $img){$img[p].style.width = '100%'; $img[p].style.height ='auto'}}</script>";//将img标签属性定死的js代码
html = html.replaceAll("width=\"\\d+\"", "width=\"100%\"").replaceAll("height=\"\\d+\"", "height=\"auto\"");
webView.loadDataWithBaseURL(null,html, "text/html", "utf-8", null);
}
统一调用加载HTML
String html1 = "<p>如果对您有帮助,麻烦点个小小的赞</p>";
String html2 = "<img src=\"https://xiongmiao-web.oss-cn-shenzhen.aliyuncs.com/upload/web/image/20210726/bubugao2.jpg\" title=\"bubugao2.jpg\" alt=\"bubugao2.jpg\"/>";
setWebView(html1);