Android防止嵌套的recyclerview自动重新定位

Kev*_*ant 10 android listview android-recyclerview

我有一个ViewPager作为线性布局中的项目,视图寻呼机中的每个项目都包含一个RecyclerView.问题是,无论何时页面最初加载,或者我在ViewPager上更改页面,视图都会自动滚动,因此回收器视图的开头是屏幕的顶部,而不是保持原样.

这个问题的.gif就在这里.注意我没有向下滚动,这是自动重新定位.

如何防止视图自动重新定位到回收器视图的开头?

Har*_*hit 27

您可以将此属性添加到线性布局中.您的scrollView的线性布局直接子项.

    android:descendantFocusability="blocksDescendants"
Run Code Online (Sandbox Code Playgroud)

  • 它禁用了childview的焦点。因此,它不再是可触摸的或不可单击的……对此问题有任何建议或替代方案吗? (2认同)

Alb*_*lvo 7

我们有类似的问题.我们有一个垂直的RecyclerView.此垂直的每个项目都RecyclerView包含一个横向RecyclerView,就像在Android TV应用中一样.

当我们将支持库从23.4.0升级到24.0.0时,突然出现了自动滚动.特别是,当我们打开一个Activity然后然后返回时,垂直RecyclerView向上滚动,这样当前的水平RecyclerView行不会被切断并且行完全显示.

添加android:descendantFocusability="blocksDescendants"修复问题.

但是,我找到了另一种解决方案,它也有效.在我们的例子中,垂直RecyclerView包含在一个FrameLayout.如果我补充android:focusableInTouchMode="true"一点FrameLayout,问题就会消失.

这里提到第三个解决方案,基本上都是在调用setFocusable(false)child/inner RecyclerViews.我没试过这个.

顺便说一下,AOSP上有一个未解决的问题.