滚动到recyclerView中第一个完全可见的项目

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了滚动到recyclerView中第一个完全可见的项目相关的知识,希望对你有一定的参考价值。

我正在尝试滚动到滚动时第一个完全可见的项目,我正在做以下事情:

recyclerView.addOnScrollListener(new OnScrollListener() {
        @Override
        public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
            super.onScrollStateChanged(recyclerView, newState);
        }

        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            super.onScrolled(recyclerView, dx, dy);
            LinearLayoutManager layoutManager = ((LinearLayoutManager) recyclerView
                    .getLayoutManager());

            int position = layoutManager.findFirstCompletelyVisibleItemPosition();

            if(position>0){
                recyclerView.smoothScrollToPosition(position);
                Log.e(TAG, "onScrolled: just called smooth scroll >> "+position );
            }
        }
    });

我正在获得完全可见项目的正确位置,但滚动到它[尝试将其滚动到屏幕的可见部分的初始位置]不起作用。我尝试通过以下方式实现它:

1.

recyclerView.smoothScrollToPosition(position);

2.

layoutManager.smoothScrollToPosition(recyclerView, null, position);

他们没有改变!!我用谷歌搜索解决方案,但我找不到合适的解决方案。请建议我如何实现这一目标?

答案

使用SnapHelper

SnapHelper snapHelper = new GravitySnapHelper(Gravity.START); 
snapHelper.attachToRecyclerView(startRecyclerView);

有关更多详细信息,请阅读本文:https://rubensousa.github.io/2016/08/recyclerviewsnap

以上是关于滚动到recyclerView中第一个完全可见的项目的主要内容,如果未能解决你的问题,请参考以下文章

在键盘打开时将项目添加到 RecyclerView 时向下滚动

LinearLayout 和 NestedScrollView 内的 RecyclerView - 如何滚动到某个位置的项目顶部?

当滚动超出最初可见的范围时,无法访问 recyclerview 中的 textview

RecyclerView SnapHelper 无法显示第一个/最后一个项目

具有 RecyclerView 的页面中 Persistent 或 Standard BottomSheet 的奇怪滚动行为和可见性

当在nestedscrollview的recyclerview中将项目拖出可见空间时-nestedscrollView不滚动