现在的位置: 首页 > 编程技术 > 安卓开发 > 正文

Android检测ListView滚动距离

2015年09月17日 安卓开发 ⁄ 共 542字 ⁄ 字号 Android检测ListView滚动距离已关闭评论 ⁄ 阅读 199 次

这个方法不仅适用于每个item高度一致,也适用于有header和高度不一致的情况。一般的getScrolledY()方法是不行的,因为ListView本身并没有动。

private Dictionary<Integer, Integer> listViewItemHeights = new Hashtable<Integer, Integer>();

private int getScroll() {
    View c = listView.getChildAt(0); //this is the first visible row
    int scrollY = -c.getTop();
    listViewItemHeights.put(listView.getFirstVisiblePosition(), c.getHeight());
    for (int i = 0; i < listView.getFirstVisiblePosition(); ++i) {
        if (listViewItemHeights.get(i) != null) // (this is a sanity check)
            scrollY += listViewItemHeights.get(i); //add all heights of the views that are gone
    }
    return scrollY;
}

 

抱歉!评论已关闭.