2020最全WebView适配
这里推荐使用腾讯X5内核浏览,Tbs替代google的webview,不然适配各种机型,甚至有的低版本的安卓无论怎么配置都加载不出h5,canvas。而且腾讯x5省去了很多麻烦的配置,非常好用。
腾讯X5Webview链接: 跳转网页.
记录一下自己遇到的坑与问题
问题一:布局镶嵌h5页面,使用input时弹出软键盘,软键盘覆盖了input,input应该随着软键盘高度被向上顶,
解决办法:
在加载webview的xml根目录里,添加 android:fitsSystemWindows=“true” 即可。
问题二:聊天信息不能交互,头像显示不出来。
原因:
主要的问题是http 和 https 的原因。Android 7之上的版本必须使用https传递,那么如果头像链接,webview的链接是http开头,就会导致网页加载失败了,或者不显示。
如果不是http网络传输的原因,那么可能少了一些配置,下面内容里有webview可添加的配置
解决办法:
查看这篇配置网络清单文章: 打开链接.
以下是配置webview的一些常用的到的信息
WebSettings webSettings = webview.getSettings();
webSettings.setDomStorageEnabled(true);//是否开启本地DOM存储 防止镶嵌h5页面加载显示白板
webSettings.setJavaScriptEnabled(true);//允许js
webSettings.setAllowFileAccessFromFileURLs(true); //允许文件url
webSettings.setSupportZoom(true); // 支持缩放
webSettings.setBlockNetworkImage(false);//解决图片不显示
webSettings.setUseWideViewPort(true);//设置webview推荐使用的窗口,用于解决页面不适配屏幕
webSettings.setBlockNetworkLoads(false); //不阻止网络加载
webSettings.setLoadWithOverviewMode(true); //缩放至屏幕大小
webSettings.setLoadsImagesAutomatically(true); //自动加载图片资源
// webSettings.setDefaultFontSize((int) 10); //设置字体
// setting.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN); //已经被android弃用
chat_webView.setWebChromeClient(new WebChromeClient());//chrome
chat_webView.getSettings().setSupportZoom(true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { //解决http和https混合问题
webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
https://www.teachcourse.cn/android-webview-websettings