
因为需求,所以在XML布局中,设置WebView高度为wrap_content(自适应),但是页面加载内容存在视频,视频全屏后,页面存在留白。
我的思路是在页面加载完成的时候,修改webview的高度。
所以我们设置WebViewClient监听,在onPageFinished方法中,通过重新设置LayoutParams去修改webview的高度。
如果单纯只是视频全屏,没有其他 *** 作,这种应该是满足了。但是我还有字体大小变化,所以还是有问题,最后采用办法还是通过JS,告诉客户端页面高度,然后通过LayoutParams设置。
webviewaddjavascriptinterface可以调用android代码
android可以获得屏幕高度
DisplayMetrics dm = new DisplayMetrics();
getWindowManager()getDefaultDisplay()getMetrics(dm);
int height = dmheightPixels//这个就是屏幕高度了。
webViewaddJavascriptInterface(new WebAppInterface(this), "Android");
这个就创立了一个接口名,叫“Android”,运行在WebView中的JS代码可以通过这个名字调用WebAppInterface类中的showToast()方法:
<input type="button" value="Say hello" onClick="showAndroidToast('Hello Android!')" />
<script type="text/javascript">
function showAndroidToast(toast)
{
AndroidshowToast(toast);
}
</script>
需要添加宽度设置。webviewhtml的超过高度想要显示内容需要添加宽度,因此webviewhtml超过高度不显示需要添加宽度设置。webviewhtml是一个基于webkit的引擎,可以解析DOM元素,展示html页面的控件。
为了实现webview向上滑动可以隐藏title栏,目前最简便的方法就是使用CordinatorLayout,要在CordinatorLayout中使用Webview,就必须使Webview实现NestedScrollingChild接口或者将WebView嵌套在实现了NestedScrollingChild接口的View(例如NestedScrollView,RecylerView)中。
先贴一下布局文件
此时webview的高度为当前页面全部内容的高度,由于硬件性能限制,图层绘制的高度有最大值,超过最大值会造成无法绘制图层异常,同时如果没有crash,也会因为滑动被NestedScrollView拦截无法判断内容是否滑到底部去加载更多;如果尝试在页面加载完成后重新绘制Webview的大小以避免上述异常,则会因为滑动 *** 作被NestedScrollView拦截而网页内容无法滑动,因此,Google给出的建议是不要将Webview放在NestedScrollView中。
参考: >
以上就是关于解决:WebView高度自适应,视频全屏后,页面留白问题全部的内容,包括:解决:WebView高度自适应,视频全屏后,页面留白问题、android 开发中 怎么用js获取手机屏幕高度、webviewhtml超过高度不显示等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)