如何检测回收器视图在其边界之外的滚动



有没有办法检测到用户正在尝试滚动回收器视图并且没有发生实际滚动?例如,垂直回收器视图位于其顶部位置,用户尝试向上滚动。

是的,您可以使用回收器视图的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。

最新更新