方法一:
mListView.setOnScrollChangeListener(new View.OnScrollChangeListener() {
@Override
public void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
}
});
這個方法中,scrollX只有在正在滾動的時候纔有可能有值,靜止時常爲0,所以用這種無法得到當前滾動的高度.
方法二:
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
View firstChild = view.getChildAt(0);
if (firstChild == null) {
return;
}
int top = firstChild.getTop();
int heightTotal = 0;
for (int i = 0; i < firstVisibleItem; i++) {
View childAt = view.getChildAt(i);
heightTotal += childAt.getHeight();
}
heightTotal += Math.abs(top);
}
遍歷第一個顯示的position之前所有的item,並將高度累加,
最後top是第一個元素距離parent的高度,有可能是負值,所以要用絕對值,這樣就大概計算出當前ListView滾動的高度了