如何检测 RecyclerView 何时滚动到最顶部位置

5 android gridlayoutmanager android-recyclerview android-appbarlayout

我上面有 RecyclerView,我有一个 AppBarLayout,它的高度大于 255 像素。当用户滚动 RecyclerView 时,AppBarLayout 会出现问题。为了避免这种情况,我决定手动扩展 AppBarLayout。我的 RecyclerView 由 GridLayoutManager 制成,跨度为 3。我使用下面的代码来收听 RecyclerView topreach

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
    @Override
    public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
        super.onScrollStateChanged(recyclerView, newState);
        if (newState == RecyclerView.SCROLL_STATE_IDLE) {
            int firstVisiblePosition = ((LinearLayoutManager)recyclerView.getLayoutManager()).findFirstCompletelyVisibleItemPosition();
            if (firstVisiblePosition == 0) {
                appBarLayout.setExpanded(true, true);
            }
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

Haf*_*eeb 5

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

            int firstVisibleItem = gridLayoutManager.findFirstCompletelyVisibleItemPosition();

            if(firstVisibleItem == 0){
                // your code
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)