如何在android中检测webview的scrollend?

新手上路,请多包涵

我的是一个本地应用程序,如果用户滚动到 webview 的末尾,我想在其中显示/隐藏一个按钮。我在 这里 查看了一个答案,并了解了如何通过接口注册回调的全部想法。我的主要问题是我无法在 onScrollChanged 方法中进行正确的计算。我已经尝试组合使用 getHeight()、getContentHeight()、top 等,但它似乎触发得太早了。我尝试了一个像谷歌这样内容相对较少的简单页面以及一个新闻页面。

这些逻辑适用于普通滚动视图。由于网页内容很多,可能会打乱计算。粘贴示例代码:不起作用。

 @Override
protected void onScrollChanged(int left, int top, int oldLeft, int oldTop) {
    if ( mOnWebViewBottomReachedListener != null ) {
        //if ( (getContentHeight() - (top + getHeight())) <= mMinDistance )
        int diff = (getBottom() - (getHeight() + getScrollY()));
        Log.e("values ", diff+" o");
        if ((int) Math.floor(getContentHeight() * getScaleY()) == top)
            mOnWebViewBottomReachedListener.onBottomReached(this);
    }
    super.onScrollChanged(left, top, oldLeft, oldTop);
}

需要帮助。谢谢。

原文由 Rajat Sharma 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 294
1 个回答
@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt) {
    int height = (int) Math.floor(this.getContentHeight() * this.getScale());
    int webViewHeight = this.getMeasuredHeight();
    if(this.getScrollY() + webViewHeight >= height){
       Log.i("THE END", "reached");
    }
    super.onScrollChanged(l, t, oldl, oldt);
}

此逻辑适用于网络视图。

原文由 Swati Sachdeva 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏