[CymChad/BaseRecyclerViewAdapterHelper]添加header中包含recyclerview时候,返回顶部失效

2024-08-08 812 views
7

recyclerview添加多个header,其中一个header中包含recyclerview时候,返回顶部失效,返回的位置是header的recyclerview位置,不是0

回答

9

你是说addHeaderView返回值吗?这个跟添加的view是什么无关的

5

@1109993488 不是,是recyclerView.getLayoutManager().scrollToPosition(0);这种返回顶部失效,返回的scrollY不是0,onScroll方法执行两次,第一次是0,第二次不是0

5

恩,大概明白了,你这种情况是ViewPager 多个页面切回来 先移动到内部RecyclerView,然后又移动到了0?

8

@1109993488 不是,没有viewpager,就是说recyclerview的header也是recyclerview情况时,scrollToPosition(0)定位到的位置不是最顶部,差个几十dp

1

我说的是自动滚动到RecyclerView的位置(比如显示的时候自动滚动到内部RecyclerView的位置,焦点问题,可能跟你的还不一样),你调用的scrollToPosition(0)是什么时候触发的?你的这个几十dp是不是正好显示内部RecyclerView的位置?

0

就好比说我添加了俩header,第一个是普通的ImgeView,第二个是recyclerview的,当我点击返回顶部按钮,他定位到的是我第二个header位置,我怀疑是焦点问题

8

mRecyclerView.smoothScrollToPosition(0);

2

如果你不想要从下滑到上的动画效果你可以

mRecyclerView.getLayoutManager().scrollToPosition(0);
mRecyclerView.smoothScrollToPosition(0);
1

解决了,是recyclerview嵌套滑动冲突了

2

真正的解决办法应该是 设置内嵌的recyclerview 去除焦点 recyclerview.setFocusableInTouchMode(false); recyclerview.requestFocus();