调整大小后的WebView裁剪流

发布于 2025-01-19 15:31:32 字数 1510 浏览 3 评论 0原文

我在collapsingtoolbarlayout中有一个网络浏览量。我使用AppBarlayout提供的OnOffSetChangedListener回调,以在用户向下/向上滚动时,动态地在WebView中调整WebView(i i插入LayoutParams)的大小。我观察到的是,一旦我开始降低WebView的大小,流就本身本身,并且仅显示流的一部分。一旦我向上滚动,流很好。

我在WebView设置中包括了一些我在其他问题上找到的解决方案:

webView.getSettings().setUseWideViewPort(true);
webView.getSettings().setLoadWithOverviewMode(true);

但是它们没有效果。

我想指出的是,即使用户不滚动(由于UI更新),此回调(OnoffSetChangedListener)也被重复调用,因此我的WebView设置被多次调用。我不确定为什么会发生这种情况,有什么方法可以实现这一目标吗?

inoffsetChangedListener

我的WebView设置方法:

var settings: WebSettings? = webView?.getSettings()
        //WebSettings settings = streamHolder.getSettings();
        settings?.setJavaScriptEnabled(true)
        settings?.setAppCacheEnabled(true)
        settings?.setLoadWithOverviewMode(true)
        settings?.setAllowFileAccess(true)
        settings?.useWideViewPort = true
        settings?.setAllowUniversalAccessFromFileURLs(true)
        settings?.setDomStorageEnabled(true)
        settings?.setDatabaseEnabled(true)

        //settings?.setSupportZoom(true)
        webView?.setWebViewClient(object: BaseWebViewClient() {
            override fun onPageFinished(view: WebView?, url: String?) {
                super.onPageFinished(view, url)
                //view?.zoomOut()
            }
        })

以及内部加载URL方法:

if (webView?.url.equals(url))
            return
if (url != null) {
      mWebViewStream?.loadUrl(url)

I have a webView inside a collapsingToolBarLayout. I use the OnOffsetChangedListener callback provided by the AppBarLayout to adjust the size of the webView (i insert layoutParams inside webView) dynamically as the user scrolls down/up. What I observe is that the stream crops itself once I start decreasing the webView size and it shows only a part of the stream. Once I scroll up the stream shows fine.

I have included in my webview setup some solutions i have found on other questions like:

webView.getSettings().setUseWideViewPort(true);
webView.getSettings().setLoadWithOverviewMode(true);

but they didn't have an effect.

I want to point out that this callback (OnOffsetChangedListener) is being called repeatedly even when the user doesn't scroll (because of UI updates), so my webview setup is being called multiple times. I am not sure why this is happening, is there any way to achieve this?

INSIDE onOffsetChangedListener:

My webView setUp method:

var settings: WebSettings? = webView?.getSettings()
        //WebSettings settings = streamHolder.getSettings();
        settings?.setJavaScriptEnabled(true)
        settings?.setAppCacheEnabled(true)
        settings?.setLoadWithOverviewMode(true)
        settings?.setAllowFileAccess(true)
        settings?.useWideViewPort = true
        settings?.setAllowUniversalAccessFromFileURLs(true)
        settings?.setDomStorageEnabled(true)
        settings?.setDatabaseEnabled(true)

        //settings?.setSupportZoom(true)
        webView?.setWebViewClient(object: BaseWebViewClient() {
            override fun onPageFinished(view: WebView?, url: String?) {
                super.onPageFinished(view, url)
                //view?.zoomOut()
            }
        })

and inside load url method:

if (webView?.url.equals(url))
            return
if (url != null) {
      mWebViewStream?.loadUrl(url)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文