public int getScrollY() { View c = mListView.getChildAt(0); if (c == null) { return 0; } int firstVisiblePosition = mListView.getFirstVisiblePosition(); int top = c.getTop(); return -top + firstVisiblePosition * c.getHeight() ; }
原理是假設每個item的高度是一定的(多數情況下的確如此),那么只要知道當前在第幾個item,就可以計算出總的高度,因為第一個可見item的一部分可能已經移出了邊界,所以再通過mListView.getChildAt(0)獲得第一個子view,使用
getTop()方法計算出這個偏差。綜合起來就可以計算出當前ListView的滾動高度。