今天记录一下开发中遇到的问题。首先腾讯X5内核的WEBVIEW框架挺好用的,样式好看,用起来也方便。
然后本菜鸡今天使用他遇到的问题是,在ScrollView中,x5WebView的高度计算异常导致webVIew内渲染的网页或者富文本下会有很长一段空白留白的问题。
首先WebView其实是不应该放在ScrollView中的,但是奈何设计需求。大家或多或少都会遇到这样的场景。
第一步其实很关键,大家可能想的是直接给WebView设置height warp_content 后,他会自动适应宽高。
然后这里就会出现问题,在ScrollView中的X5的webView如果高度设置为warp_content
,的话,X5WebView的高度计算就会出现错误。x5的getContentHeight
的值会非常非常的高。具体原因由于他源码混淆过的无法阅读。猜测大概原因可能跟ScrollView嵌套ListView 一样。
解决方法
在XML中,将webView的高度设置为1dp
<com.tencent.smtt.sdk.WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="1dp"/>
然后在onPageFinished
方法中手动获取getContentWidth
高度然后再去手动设置高度,代码如下
webView.webViewClient=object :WebViewClient(){
override fun onPageFinished(p0: WebView?, p1: String?) {
"加载完成高度${webView?.contentHeight}".logs("高度")
if (webView?.contentHeight==0){
//为0重新加载
webView?.reload()
}
var wlp = webView.layoutParams as LinearLayout.LayoutParams
wlp.height = Utils.dp2px(webView.contentHeight.toFloat())
webView.layoutParams = wlp
super.onPageFinished(p0, p1)
}
}
就能完美解决这个问题了
网友评论