如何知道在RecyclerView中滚动了多少像素?

时间:2017-07-07 07:00:24

标签: android scroll android-recyclerview

我有一个包含不同子视图的RecyclerView

然后用户滚动它。

我想确切地知道用户与开始状态相比滚动了多少像素。

换句话说,我想确切地知道屏幕当前内容与RecyclerView的第一项的距离(以像素为单位)。

我看到RecyclerView有一个方法computeVerticalScrollOffset。但该方法返回错误的值。

1 个答案:

答案 0 :(得分:0)

OnScrollListener可能。覆盖onScroll()方法,其参数是水平轴或垂直轴滚动的距离。

但问题很少。这不是最终的滚动值,而是许多值,你必须总结,直到状态变为RecyclerView.SCROLL_STATE_IDLE

private class YourOnScrollListener extends RecyclerView.OnScrollListener {

        private int scrollXDistance = 0;
        private int scrollYDistance = 0;

        @Override
        public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
            if (newState == RecyclerView.SCROLL_STATE_IDLE) {
                Log.d(TAG, "X distance: " + scrollXDistance + " " + "Y distance:" + scrollYDistance);
            }
        }

        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            super.onScrolled(recyclerView, dx, dy);
            scrollXDistance += dx;
            scrollYDistance += dy;
        }
    }