WebView getScrollY()始终返回0

Tim*_*ton 6 android android-webview

我试图使用webview的滚动位置来确定SwipeRefreshLayout是否应该能够刷新,除了一些网站,例如https://jobs.lever.co/memebox,getScrollY()总是返回0.有没有办法确保我会总是得到正确的滚动位置?

小智 5

也许您可以尝试将其添加到自定义Web视图中

只是告诉它正在滚动

 @Override
public boolean onTouchEvent(MotionEvent event) {
    switch (event.getAction()){
        case MotionEvent.ACTION_DOWN:
            if(this.getScrollY() <= 0){
                this.scrollTo(0,1);
            }
            break;
        case MotionEvent.ACTION_UP:
            break;
    }
    return super.onTouchEvent(event);
}
Run Code Online (Sandbox Code Playgroud)

然后覆盖 onScrollChanged

 @Override
protected void onScrollChanged(int l, int t, int oldl, int oldt) {
    super.onScrollChanged(l, t, oldl, oldt);;
    if (iWebViewScrollListener != null && t == 0) {
        iWebViewScrollListener .onTop();
    } else if (mIWebViewScroll != null && t != 0) {
        iWebViewScrollListener .notOnTop();
    }
}
Run Code Online (Sandbox Code Playgroud)

添加一个顶级监听回调时scrolling.When是onTop()使用setEnabled(true)了SwipeRefreshLayout,否则setEnabled(false)


Jar*_*ard 2

您链接的网站有一个固定的标题。我的猜测是页面本身不会滚动;它里面的一个容器确实如此。无法WebView检查页面上的每个可滚动容器,因此它会看到顶级容器不会滚动并假设整个容器是固定的。

如果您只需要下拉刷新,我建议除了SwipeRefreshLayout.