嵌套的Recyclerview自行滚动

Eme*_*men 28 android android-recyclerview

我有一个父回收站视图,里面有3个子视图.孩子的最后两个是recyclerview.

Parent recyclerview
 - child view 1
 - child view 2 (horizontal rv)
 - child view 3 (horizontal rv)
Run Code Online (Sandbox Code Playgroud)

问题是每当这个片段可见时,它会自动滚动以与child view 2底部对齐.

我已将父rv设置为侦听滚动.这就是我最终的结果:

dy: 108
dy: 72
dy: 75
dy: 62
dy: 48
dy: 42
dy: 34
dy: 27
dy: 22
dy: 16
dy: 12
dy: 10
dy: 7
dy: 5
dy: 3
dy: 3
dy: 1
dy: 1
dy: 1
Run Code Online (Sandbox Code Playgroud)

这似乎是起始dy父recyclerview被设定为0child view 2RV.它上面的一切都是-ve值.但是,我不确定是否是这种情况,因为我仍然在找出导致它的原因.

任何修复?

Alb*_*lvo 141

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

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

有一个简单的解决方案.将此添加到您的外部/父级 RecyclerView:

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

我在这个问题中找到了解决方案:

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

顺便说一下,AOSP还有一个公开的问题.

  • 要清楚,你应该将它添加到自动滚动的`RecyclerView`的父级. (2认同)
  • 我从来没有想过这个。 (2认同)