在折叠工具栏布局上将 RecyclerView 锚定得更高[重复]

Posted

技术标签:

【中文标题】在折叠工具栏布局上将 RecyclerView 锚定得更高[重复]【英文标题】:Anchor a RecyclerView little higher on a Collapsing Toolbar Layout [duplicate] 【发布时间】:2018-07-28 23:57:36 【问题描述】:

是否可以将 RecyclerView 锚定得比它通常的位置高一点,就像大多数可折叠视图上的 FAB 图标一样(预期结果请参见图 1)。

图片 1

我尝试了以下代码,但没有给出预期的结果(当前结果请参见图 2)

<android.support.design.widget.CoordinatorLayout
   android:layout_
   android:layout_>
<android.support.design.widget.AppBarLayout
    android:id="@+id/appbar"
    android:layout_
    android:layout_
    android:fitsSystemWindows="true"
    app:expanded="true">

    <android.support.design.widget.CollapsingToolbarLayout
        android:id="@+id/collapsing_toolbar"
        android:layout_
        android:layout_
        android:fitsSystemWindows="true"
        app:contentScrim="?attr/colorPrimary"
        app:expandedTitleMarginEnd="64dp"
        app:expandedTitleMarginStart="48dp"
        app:expandedTitleTextAppearance="@android:color/transparent"
        app:layout_scrollFlags="scroll|exitUntilCollapsed">

        <ImageView
            android:id="@+id/bannerImage"
            android:layout_
            android:layout_
            android:scaleType="centerCrop"
            app:layout_collapseMode="parallax"
            android:src="@drawable/starter_screen_bg"/>

    </android.support.design.widget.CollapsingToolbarLayout>

</android.support.design.widget.AppBarLayout>

    <android.support.v7.widget.RecyclerView
        android:id="@+id/categories"
        android:layout_
        android:layout_
        android:layout_gravity="center"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        android:gravity="center"
        >
    </android.support.v7.widget.RecyclerView>

</android.support.design.widget.CoordinatorLayout>

图片 2

添加app:layout_behavior="@string/appbar_scrolling_view_behavior"将recycler view附加到Collapsible View,然后添加margin bottom就忽略了。

但是删除它会产生预期的结果,但是滚动视图的行为不符合预期(没有视差效果)并且在背景图像滚动后滚动。

这样就可以实现像第一张图片一样的可折叠视图。

【问题讨论】:

【参考方案1】:

这实际上很容易实现 - 每个具有 app:layout_behavior="@string/appbar_scrolling_view_behavior" 的视图都有一个 behavior_overlapTop 属性。因此,您只需将此属性设置为您的RecyclerView

<android.support.v7.widget.RecyclerView
    android:id="@+id/categories"
    android:layout_
    android:layout_
    android:layout_gravity="center"
    app:behavior_overlapTop="64dp"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    android:gravity="center"/>

【讨论】:

我不建议使用 64dp 特定高度,而是使用 ?attr/actionBarSize 代替 但我的意思是为什么?这取决于作者的用例,所以只是一个例子。 感谢您的回答,它按预期工作【参考方案2】:
<android.support.design.widget.CoordinatorLayout
   android:layout_
   android:layout_>
<android.support.design.widget.AppBarLayout
    android:id="@+id/appbar"
    android:layout_
    android:layout_
    android:fitsSystemWindows="true"
    app:expanded="true">

    <android.support.design.widget.CollapsingToolbarLayout
        android:id="@+id/collapsing_toolbar"
        android:layout_
        android:layout_
        android:fitsSystemWindows="true"
        app:contentScrim="?attr/colorPrimary"
        app:expandedTitleMarginEnd="64dp"
        app:expandedTitleMarginStart="48dp"
        app:expandedTitleTextAppearance="@android:color/transparent"
        app:layout_scrollFlags="scroll|exitUntilCollapsed">

        <ImageView
            android:id="@+id/bannerImage"
            android:layout_
            android:layout_
            android:scaleType="centerCrop"
            app:layout_collapseMode="parallax"
            android:src="@drawable/starter_screen_bg"/>

    </android.support.design.widget.CollapsingToolbarLayout>

</android.support.design.widget.AppBarLayout>

    <android.support.v7.widget.RecyclerView
        android:id="@+id/categories"
        android:layout_
        android:layout_
        android:layout_gravity="center"
        app:behavior_overlapTop="?actionBarSize"     // Changed Here only
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        android:gravity="center" />


</android.support.design.widget.CoordinatorLayout>

【讨论】:

以上是关于在折叠工具栏布局上将 RecyclerView 锚定得更高[重复]的主要内容,如果未能解决你的问题,请参考以下文章

带有 RecyclerView 和折叠标题的 CoordinatorLayout

带有折叠工具栏的 RecyclerView 和 ViewPager

工具栏折叠时显示视图

Recyclerview实现展开、折叠分组,多种布局,多种divider

在 ConstraintLayout 中滚动 RecyclerView 时如何折叠工具栏?

给 RecyclerView 加上折叠的效果