美文网首页
记录腾讯X5内核浏览器在scrollView中高度异常导致下方留

记录腾讯X5内核浏览器在scrollView中高度异常导致下方留

作者: 宇智波_佐星 | 来源:发表于2020-09-02 17:22 被阅读0次

今天记录一下开发中遇到的问题。首先腾讯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)
            }
        }

就能完美解决这个问题了


相关文章

网友评论

      本文标题:记录腾讯X5内核浏览器在scrollView中高度异常导致下方留

      本文链接:https://www.haomeiwen.com/subject/cupwsktx.html