在折叠工具栏布局上将 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