可滚动的回收器视图和视图寻呼机
Scrollable Recycler view and view pager
我有一个屏幕,我需要在其中显示顶部的工具栏、工具栏下方的幻灯片和幻灯片下方的回收视图。
为了显示幻灯片,我使用了水平滑动图像的 viewPager。
我目前面临的问题是,当滚动 recyclerview 时,viewPager 需要随之滚动,工具栏应保持固定状态。
我尝试将 viewPager 和 recyclerview 放在嵌套的 Scroll 中,但是由于嵌套的滚动需要一个子项,我不得不将 viewpager 和 recyclerview 放在线性布局中,因为 recyclerview 的滚动行为适用折腾(我正在监视 recyclerview 滚动,所以当它到达底部时我可以加载更多结果)。
您可以使用 CoordinatorLayout
、AppBarLayout
和 CollapsingToolbarLayout
解决此问题。您将 Toolbar
和 ViewPager
放在 CollapsingToolbarLayout
中,并使用 RecyclerView
作为 AppBarLayout
的滚动兄弟,以便它可以正确折叠 ViewPager
.
这是一些示例XML我曾经实现过我认为你所描述的:
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.design.widget.CollapsingToolbarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<android.support.v4.view.ViewPager
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_marginTop="?attr/actionBarSize"/>
<android.support.v7.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_collapseMode="pin"/>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
app:layoutManager="LinearLayoutManager"/>
</android.support.design.widget.CoordinatorLayout>
唯一棘手的一点是 <Toolbar>
标签必须跟在 <ViewPager>
标签之后,因为它们都在派生自 FrameLayout
的视图中。通常,这意味着工具栏遮挡了 viewpager 的顶部,但是 viewpager 的 marginTop
属性阻止了这种情况的发生。
我有一个屏幕,我需要在其中显示顶部的工具栏、工具栏下方的幻灯片和幻灯片下方的回收视图。 为了显示幻灯片,我使用了水平滑动图像的 viewPager。
我目前面临的问题是,当滚动 recyclerview 时,viewPager 需要随之滚动,工具栏应保持固定状态。
我尝试将 viewPager 和 recyclerview 放在嵌套的 Scroll 中,但是由于嵌套的滚动需要一个子项,我不得不将 viewpager 和 recyclerview 放在线性布局中,因为 recyclerview 的滚动行为适用折腾(我正在监视 recyclerview 滚动,所以当它到达底部时我可以加载更多结果)。
您可以使用 CoordinatorLayout
、AppBarLayout
和 CollapsingToolbarLayout
解决此问题。您将 Toolbar
和 ViewPager
放在 CollapsingToolbarLayout
中,并使用 RecyclerView
作为 AppBarLayout
的滚动兄弟,以便它可以正确折叠 ViewPager
.
这是一些示例XML我曾经实现过我认为你所描述的:
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.design.widget.CollapsingToolbarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<android.support.v4.view.ViewPager
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_marginTop="?attr/actionBarSize"/>
<android.support.v7.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_collapseMode="pin"/>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
app:layoutManager="LinearLayoutManager"/>
</android.support.design.widget.CoordinatorLayout>
唯一棘手的一点是 <Toolbar>
标签必须跟在 <ViewPager>
标签之后,因为它们都在派生自 FrameLayout
的视图中。通常,这意味着工具栏遮挡了 viewpager 的顶部,但是 viewpager 的 marginTop
属性阻止了这种情况的发生。