CoordinatorLayout 中的嵌套 RecyclerView
Nested RecyclerViews in CoordinatorLayout
我现在正在处理的应用程序中的 View
层次结构有问题。
其中一个屏幕如下所示:
<CoordinatorLayout>
<AppBarLayout>
<Toolbar/>
</AppBarLayout>
<RecyclerView>
... items, some of which are horizontal Recyclers...
</RecyclerView>
</CoordinatorLayout>
整个想法是在向下滚动 RecyclerView
内容时很好地呈现 Toolbar
视差。
整个过程运行良好,但提到的视差行为存在问题(这是通过自定义 AppBarLayout.ScrollingViewBehavior
实现完成的)。
有两种情况,具体取决于用户滚动时关注的项目:
- 如果正常 child 聚焦,整个事情会按预期工作 -
Toolbar
视差进出。
- 如果 Recycler-based child 获得焦点,内容
RecyclerView
将按预期滚动,但不会触发视差行为,使布局变得奇怪 mid-state.
知道为什么会发生这种情况以及如何获得正确的行为,也就是一直传递到 CoordinatorLayout
的事件吗?
对于您的每个 sub-recyclerView,您需要调用
setNestedScrollingEnabled(false)
在那个 RecyclerView 上(您可以从您用于主 recyclerview 的任何 viewholder 来创建子视图)。这是嵌套滚动中当前已知的错误。如果我猜的话,我会说这可能与嵌套滚动布局不应该将嵌套滚动通知器发送到 parents 这一事实有关,如果它们在没有滚动轴,如果这有意义的话。
我现在正在处理的应用程序中的 View
层次结构有问题。
其中一个屏幕如下所示:
<CoordinatorLayout>
<AppBarLayout>
<Toolbar/>
</AppBarLayout>
<RecyclerView>
... items, some of which are horizontal Recyclers...
</RecyclerView>
</CoordinatorLayout>
整个想法是在向下滚动 RecyclerView
内容时很好地呈现 Toolbar
视差。
整个过程运行良好,但提到的视差行为存在问题(这是通过自定义 AppBarLayout.ScrollingViewBehavior
实现完成的)。
有两种情况,具体取决于用户滚动时关注的项目:
- 如果正常 child 聚焦,整个事情会按预期工作 -
Toolbar
视差进出。 - 如果 Recycler-based child 获得焦点,内容
RecyclerView
将按预期滚动,但不会触发视差行为,使布局变得奇怪 mid-state.
知道为什么会发生这种情况以及如何获得正确的行为,也就是一直传递到 CoordinatorLayout
的事件吗?
对于您的每个 sub-recyclerView,您需要调用
setNestedScrollingEnabled(false)
在那个 RecyclerView 上(您可以从您用于主 recyclerview 的任何 viewholder 来创建子视图)。这是嵌套滚动中当前已知的错误。如果我猜的话,我会说这可能与嵌套滚动布局不应该将嵌套滚动通知器发送到 parents 这一事实有关,如果它们在没有滚动轴,如果这有意义的话。