我的应用程序有一系列的html文件,我想逐个显示给用户。当用户滚动到页面底部时,我想加载下一页,当他向上滚动时,我想加载上一页。为此,我需要知道用户何时滚动到最底层(或最顶层)。因此,我一次只覆盖了onOverScrolled()
和onScrollChanged()
。WebView最顶层和最底层
@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页,滚动到底部, 然后而不是第2页,第8页将显示(数量不同,有时我得到2页向前,有时5页...)
如何可以我处理这个?
试着用javaScript做同样的事 – NickF
@NickF:有什么不同? – mehdok
我不确定,但我认为你遇到的这个问题是因为当你滚动到最后时,WebView滚动保持超滚动模式,并且当加载新页面时,WebView加载下一页。 – NickF