WebView最顶层和最底层

时间:2014-02-23 11:32:10

标签: android webview android-webview

我的应用程序有一系列html文件,我想逐一向用户显示。当用户滚动到页面底部时,我想加载下一页,当他向上滚动时,我想加载上一页。为此,我需要知道用户何时滚动到最底部(或最上面)。所以我一次一个地覆盖了onOverScrolled()onScrollChanged()

@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt)
{
    super.onScrollChanged(l, t, oldl, oldt);
    int height = (int) Math.floor(this.getContentHeight() * this.getScale());  
    int webViewHeight = this.getMeasuredHeight();  
    if(this.getScrollY() + webViewHeight >= height)
    {  
        loadNextPage();
    }
}

@Override
protected void onOverScrolled(int scrollX, int scrollY, boolean clampedX, boolean clampedY)
{
    super.onOverScrolled(scrollX, scrollY, clampedX, clampedY);
    if(clampedY)
    {
        if (!(canScrollVertically(SCROLL_DOWN)))
            loadNextPage();
        else if (!(canScrollVertically(SCROLL_UP)))
            loadPrePage();
    }
}

这两个代码都可以工作,但问题是有时会多次调用代码。假设我在第1页,滚动到底部, 然后第8页将显示(数字不同,有时我向前翻2页,有时5页......)

我该如何处理?

1 个答案:

答案 0 :(得分:3)

作为loadNextPageloadPrePare中的第一行,设置一个标志,指示webview正在重新加载。设置此标志时,请勿处理任何滚动通知。

当webview完成加载时,清除标记。您可以使用WebViewClient.onPageFinished方法通知webview已完成加载。