CoordinatorLayout中嵌套的RecyclerViews

Kel*_*dos 0 android parallax material-design android-recyclerview android-coordinatorlayout

View现在正在处理的应用程序中存在层次结构问题.

其中一个屏幕看起来像这样:

<CoordinatorLayout>

    <AppBarLayout>
        <Toolbar/>
    </AppBarLayout>

    <RecyclerView>
        ... items, some of which are horizontal Recyclers...
    </RecyclerView>

</CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

整个想法是Toolbar在向下滚动RecyclerView内容时很好地拥有视差.

整个过程工作得很好,但是提到的视差行为存在问题(这是通过自定义AppBarLayout.ScrollingViewBehavior实现完成的).

有两种情况,具体取决于用户在滚动时关注的项目:

  1. 如果一个正常的孩子聚焦,整个事情就像预期的那样 - Toolbar进出视差.
  2. 如果聚焦基于Recycler的孩子,内容RecyclerView将按预期滚动,但视差行为不会触发,使布局处于奇怪的中间状态.

知道为什么会这样,以及如何获得正确的行为,也就是事件一直传递到CoordinatorLayout

Joh*_*her 5

对于每个sub-recyclerView,您需要致电

setNestedScrollingEnabled(false)
Run Code Online (Sandbox Code Playgroud)

在RecyclerView上(您可以从主要的Recyclerview用于创建子查看器的任何视图中执行此操作).这是嵌套滚动中当前已知的错误.如果我猜测,我会说它可能与嵌套滚动布局不应该向父母发送嵌套滚动通知符这一事实有关,如果它们在没有滚动轴的方向上滚动,如果这是有道理的.