对于某些网站,webview onScrollChange永远不会被调用

问题描述

我在SwipeRegreshLayout内有一个webview,因此,当用户位于网页顶部时,他们向上滚动swipeRefreshLayout会重新加载页面。但是,对于少数网站,如果我进入底部并尝试向上滚动swipeRefreshLayout会被触发,但不应该这样,因为仅当用户位于网页顶部时才需要触发此swipeRefreshLayout。我发现发生这种情况是因为我的webview onScrollChange方法没有被那些网站调用,结果导致该网页没有足够的信息(无论用户是网页的顶部还是底部)。

这是我的布局页面

<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
        android:id="@+id/swipe_refresh"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <WebView
            android:id="@+id/web_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>

    </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>

我调试是否向Webview通知有关用户在网页上滚动的方式是:

binding.webView.getViewTreeObserver().addOnScrollChangedListener(OnScrollChangedListener {
        
        Log.d("DEBUG",binding.webView.getScrollY().toString())
        if (binding.webView.getScrollY() == 0){ 
            binding.swipeRefresh.setEnabled(true)
        }
        else binding.swipeRefresh.setEnabled(false)
    })

对于大多数网站,此onScrollChange方法会被调用,但只有极少数网站无法调用方法,因为我的swipeRefreshLayout工作很奇怪。我的swipeRefreshLayout无法正常工作的网站是:https://www.dailymail.co.uk/home/index.html

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)