我正在尝试使用recyclerview实现简单的视差标头。
这里没什么好看的。仅遵循文档,博客,指南,甚至stackoverflow答案。但是每个人都只是复制了文档,并使用toobar实现了该文档。我不要在这里的工具栏。而且,使用CoordinatorLayout不能立即使用。现有的解决方案包括向RecyclerView添加伪造的标题项,或将标题与ListView一起使用。这似乎是CoordinatorLayout体系结构的过时和过时的。
如果我正确理解,appbar_scrolling_view_behavior
仅可以在AppBarLayout
的直接层次结构中使用。这就是为什么它不起作用。
我在支持库中找到了2个类:HeaderScrollingViewBehavior和HeaderBehavior。但是它们是抽象的,而具体的类是AppBarLayout的内部。
有人成功实现了CoordinatorLayout的自定义行为,因此它同时支持RecyclerView和标头视图吗? NestedScrollView可以轻松解决问题吗? (似乎没有)。
我的布局曾经具有以下层次结构:
DrawerLayout
CoordinatorLayout
(include code, see below)
LinearLayout fullscreen (for fragments)
FrameLayout fullscreen (for popup fragments)
AppBarLayout/Toolbar
“包含”代码层次结构:
(Some stacked layouts (constraintlayout) including "ctobar")
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintTop_toBottomOf="@+id/ctobar"
app:layout_constraintBottom_toBottomOf="parent"
>
<include
android:id="@+id/collapsibleHeader"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@+id/ctobar"
android:minHeight="10dp"
app:layout_collapseMode="parallax"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
app:layout_anchor="@+id/swipeRefresh"
app:layout_anchorGravity="top"
layout="@layout/fragment_homeroot_home_streamheader" />
<mvxui.MvxSwipeRefreshLayout2
android:id="@+id/swipeRefresh"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintTop_toBottomOf="@+id/collapsibleHeader"
app:layout_constraintBottom_toBottomOf="parent"
app:MvxBind="RefreshCommand PullToRefreshCommand"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
>
<mvxui.MvxRecyclerView2
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintTop_toBottomOf="@+id/collapsibleHeader"
app:layout_constraintBottom_toBottomOf="parent"
android:scrollbars="none"
android:divider="@color/accent"
android:animateLayoutChanges="false"
app:MvxItemTemplates="fragment_homeroot_home_streamcell_normal,fragment_homeroot_home_streamcell_unsaved"
app:MvxBind="ItemsSource StreamCells; ItemClick FlightDetailCommand"
/>
</mvxui.MvxSwipeRefreshLayout2>
</android.support.design.widget.CoordinatorLayout>
我的新布局具有以下层次结构:
CoordinatorLayout
SwipeRefreshLayout (match_parent/match_parent, layout_behavior1: custom TBD)
RecyclerView
MyHeaderView (match_parent/wrap_content, layout_behavior2: custom TBD)
您要在layout_behavior1 / layout_behavior2中放什么?