ListView監聽滾動的高度

方法一:

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滾動的高度了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章