可滚动的Recycler视图和视图寻呼机

时间:2018-02-03 14:31:21

标签: android android-recyclerview android-viewpager android-toolbar android-nestedscrollview

我有一个屏幕,我需要在顶部显示工具栏,在工具栏下方显示幻灯片,在幻灯片下方显示回收视图。 为了显示幻灯片,我使用了一个水平滑动图像的viewPager。

我目前面临的问题是,当滚动recyclelerview时,viewPager需要滚动它,工具栏应保持固定。

我尝试将viewPager和recyclerview放在一个嵌套的Scroll中,但由于嵌套滚动需要一个孩子,我必须将viewpager和recyclerview放在一个线性布局中,因为recyclelerview的滚动行为是为了折腾(我正在监控recyclerview滚动,这样当它到达底部时我可以加载更多的结果。)

1 个答案:

答案 0 :(得分:1)

您可以使用CoordinatorLayoutAppBarLayoutCollapsingToolbarLayout来解决此问题。您将ToolbarViewPager放在CollapsingToolbarLayout中,并使用RecyclerView作为AppBarLayout的滚动兄弟,以便它可以正确折叠ViewPager {1}}。

以下是我用来实现我认为你所描述的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属性会阻止它发生。