我的應用程序有一系列的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