如何检测recyclerview的滚动范围?

时间:2019-06-14 07:35:10

标签: android android-recyclerview scroll

有没有一种方法可以检测到用户正在尝试滚动recyclerview而未发生实际滚动?例如,垂直的回收站视图位于其顶部位置,用户尝试向上滚动它。

1 个答案:

答案 0 :(得分:1)

是的,您可以使用回收站视图的onScroll功能检测滚动行为。

 recyclerView
                .addOnScrollListener(new RecyclerView.OnScrollListener() {
                    @Override
                    public void onScrolled(RecyclerView recyclerView,
                                           int dx, int dy) {
                        super.onScrolled(recyclerView, dx, dy);

                        lastVisibleItem = linearLayoutManager
                                .findLastVisibleItemPosition();
                        if (!loading
                                && totalItemCount <= (lastVisibleItem + visibleThreshold)) {
                            // Do something

                        }
                    }
                });
    }

正如您在上面看到的那样,(linearLayoutManager.findLastVisibleItemPosition();)为您提供了最后一个可见位置,一旦用户尝试滚动回收器视图,它就会改变最后一个可见位置。

即使dx也会给您int:水平滚动量和dy(int)会给您垂直滚动量。 如果在布局计算后可见项范围发生更改,则也会调用此回调。在这种情况下,dx和dy将为0。