CoordinatorLayout中嵌套的RecyclerViews

时间:2016-04-19 14:51:44

标签: android material-design android-recyclerview parallax android-coordinatorlayout

我在我正在处理的应用中遇到View层次结构的问题。

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

<CoordinatorLayout>

    <AppBarLayout>
        <Toolbar/>
    </AppBarLayout>

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

</CoordinatorLayout>

整个想法是在向下滚动Toolbar内容时很好地获得RecyclerView视差。

整个过程相当不错,但是提到的视差行为存在问题(使用自定义AppBarLayout.ScrollingViewBehavior实现完成)。

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

  1. 如果一个正常的孩子聚焦,那么整个事情就会按预期运作 - Toolbar视差进出。
  2. 如果聚焦基于Recycler的孩子,内容RecyclerView将按预期滚动,但视差行为不会触发,使布局处于奇怪的中间状态。
  3. 知道为什么会发生这种情况以及如何获得正确的行为,即事件一直传递到CoordinatorLayout

1 个答案:

答案 0 :(得分:5)

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

setNestedScrollingEnabled(false)

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