變化的getWidth()來的getHeight()獲取寬度最大滾動它是:
public class myScrollView extends ScrollView
{
public myScrollView(Context context)
{
super(context);
}
public myScrollView(Context context, AttributeSet attributeSet)
{
super(context,attributeSet);
}
@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt)
{
View view = (View)getChildAt(getChildCount()-1);
int d = view.getBottom();
d -= (getHeight()+getScrollY());
if(d==0)
{
//you are at the end of the list in scrollview
//do what you wanna do here
}
else
super.onScrollChanged(l,t,oldl,oldt);
}
}
您可以使用myScrollView xml佈局或實例化它在喲你的代碼。 提示:如果用戶頻繁訪問列表的末尾10次,那麼代碼將運行10次。在某些情況下,例如當您想要從遠程服務器加載數據來更新列表時,該行爲將是不受歡迎的(最可能)。嘗試預測不希望的情況並避免它們。
提示2:有時會越來越接近列表的末尾可能是讓你的腳本運行在正確的時間。例如,用戶正在閱讀文章列表並越來越接近結束。那麼你在列表完成之前開始加載更多。要做到這一點,僅僅這樣做是爲了實現你的目的:
if(d<=SOME_THRESHOLD) {}
由於滾動型只能有一個孩子,在那裏你一定有一個: 如果(scrollView.getScrollY()+ scrollView.getHeight()> = scrollView.getChildAt(0).getMeasuredHeight()){/ *已滾動到底* /} – Tom 2015-01-14 22:07:17
這是放在一個方法?這個代碼是如何實現的? – 2015-02-09 02:04:57
@ItzHoudini我儘可能通用,所以你可以任何你想要的方式使用它。 – sanna 2015-02-11 14:17:11