Якорь RecyclerView немного выше на макете панели сворачивания
Возможно ли привязать RecyclerView немного выше обычного местоположения, Как и значок FAB на большинстве сворачиваемых видов (см. Изображение 1 для ожидаемых результатов).
Изображение 1
Я попробовал следующий код, но он не дает ожидаемого результата (см. Изображение 2 для текущего результата)
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="180dp"
android:fitsSystemWindows="true"
app:expanded="true">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
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_width="match_parent"
android:layout_height="match_parent"
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_width="match_parent"
android:layout_height="match_parent"
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 к Collapsible View, а затем добавление нижней части поля игнорируется.
Но удаление его дает ожидаемый результат, но тогда представление прокрутки не ведет себя так, как предполагалось (без эффекта параллакса) и прокручивается после прокрутки фонового изображения.
Таким образом, можно получить складной вид, такой как первое изображение.
Ответы
Ответ 1
Это на самом деле довольно легко достичь - есть behavior_overlapTop
свойство для каждого вида, что имеет app:layout_behavior="@string/appbar_scrolling_view_behavior"
. Итак, все, что вам нужно сделать, это просто установить это свойство в свой RecyclerView
:
<android.support.v7.widget.RecyclerView
android:id="@+id/categories"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
app:behavior_overlapTop="64dp"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:gravity="center"/>
Ответ 2
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="180dp"
android:fitsSystemWindows="true"
app:expanded="true">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
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_width="match_parent"
android:layout_height="match_parent"
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_width="match_parent"
android:layout_height="match_parent"
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>