Android ListView当前滚动位置Y像素

Juh*_*ani 29 android listview scroll scroll-offset

我试图检测列表视图何时滚动超过某个固定阈值(以像素为单位)(第一项的一半).不幸的是listview的getScrollY()似乎总是返回滚动位置的0个instad.有没有办法按像素获取实际的滚动位置?

这是我试图使用的代码,但据说它只返回0.

getListView().setOnScrollListener(new AbsListView.OnScrollListener() {
    public void onScroll(AbsListView view, int firstVisibleItem,
                         int visibleItemCount, int totalItemCount) {
        Log.d("scroll", "scroll: " + getListView().getScrollY());
    }

    public void onScrollStateChanged(AbsListView view, int scrollState) {
        if (scrollState == 0)
        Log.d("scroll", "scrolling stopped");
    }
});
Run Code Online (Sandbox Code Playgroud)

Cyr*_*ier 52

因为内容的总高度未知,所以Android中的ListView没有Y滚动的概念.仅显示所显示内容的高度.

但是,可以使用以下hack获取可见项目的当前位置/ Y滚动:

getListView().getChildAt(0).getTop();
Run Code Online (Sandbox Code Playgroud)

  • 这不再起作用了.您必须将第一个可见视图的所有先前项目的高度添加到该段代码中.一些内部api最近发生了变化.我希望api能够包含一个简单的函数来获取这个值.所有解决方案都是hackish,并且必将打破未来的API版本.永远不应该混淆列表视图的子视图 (7认同)