问题:
因为需求,所以在XML布局中,设置WebView高度为wrap_content(自适应),但是页面加载内容存在视频,视频全屏后,页面存在留白。
解决方案:
我的思路是在页面加载完成的时候,修改webview的高度。
所以我们设置WebViewClient监听,在onPageFinished方法中,通过重新设置LayoutParams去修改webview的高度。
webViewClient = object : WebViewClient() {
override fun onPageFinished(webview: WebView?, p1: String?) {
super.onPageFinished(webview, p1)
LogUtils.d("Logger", "DefineWebView.onPageFinished")
//如果webview的高度是自适应,重新设置他的高度,防止视频全屏后,改变webview的高度.
if (layoutParams.height == -2) {
LogUtils.d("Logger", "DefineWebView.onPageFinished width=${width} ,height=${height}")
val lp = LinearLayout.LayoutParams(width, height)
layoutParams = lp
}
}
后续
如果单纯只是视频全屏,没有其他操作,这种应该是满足了。但是我还有字体大小变化,所以还是有问题,最后采用办法还是通过JS,告诉客户端页面高度,然后通过LayoutParams设置。
网友评论