检测Webview滚动是否到达结尾

时间:2012-05-29 07:14:23

标签: android scroll android-webview

我正在尝试找出WebView可以达到的最大滚动位置,我尝试了webView.pageDown(true)但结果却延迟了(我无法向下滚动) ,然后在用户面前,这种方法每次都不起作用),我也试过webView.getContentHeight()并且阿拉伯语内容的高度不正确。

请建议

3 个答案:

答案 0 :(得分:11)

好吧,我想出了答案

您可以使用

获取实际内容高度
  

(int)Math.floor(webView.getContentHeight()* webView.getScale());

当你获得真正的高度时,只需覆盖webview中的滚动方法来收听滚动事件,如果滚动到达真实高度,你的webview就在滚动的底部。

答案 1 :(得分:6)

@Override
public void onScroll(int l, int t) {
    int height = (int) Math.floor(webView.getContentHeight() * webView.getScale());
    int webViewHeight = webView.getHeight();
    int cutoff = height - webViewHeight - 10; // Don't be too strict on the cutoff point
    if (t >= cutoff) {
        setDisclaimerButtonEnabled(true);
    }
}

非严格性是必需的,因为我发现在三星S5上最底部的滚动值只有1个像素值远离最底层值!

答案 2 :(得分:-1)

仅在webview到达/滚动到底部时加载/可见按钮。

创建JavaScript类:

public class JavaScriptInterface {

  @android.webkit.JavascriptInterface
  public void didScrollToBottom() {
    Log.d(TAG, "Scroll to Bottom");
    myHandler.post(new Runnable() {
      @Override
      public void run() {
         btnAccept.setVisibility(View.VISIBLE);

          }
       });
      }
    }

在onCreate()中:

final JavaScriptInterface jsInterface = new JavaScriptInterface();
myWebView.addJavascriptInterface(jsInterface, "AndroidFunction");