I have a layout like the following:
(Toolbar, Header View, Text View, RecyclerView)
I need the header to be collapsed when I scrolling recyclerview's items. So that the view "Choose item" and recyclerview left on the screen.
I saw examples when toolbar is being collapsed, but I need toolbar to be present always.
Which layouts/behavior should I use to get this work?
Use Coordinatorlayout as the top-level application decor. It will usually used to layout AppBarLayout , FloatingActionButton , and the main body of your screen, say NestedScrollView . Inside the NestedScrollView use ConstraintLayout to describe the rest of the layout as a flat hierarchy.
By specifying Behaviors for child views of a CoordinatorLayout you can provide many different interactions within a single parent and those views can also interact with one another. View classes can specify a default behavior when used as a child of a CoordinatorLayout by implementing the AttachedBehavior interface.
The solution is simple, we just need to set the app:scrimAnimationDuration=”0" in our collapsing toolbar layout like the below code snippet. Now just run the code and see the results, you will see then there will be no fading animation anymore.
You can achieve it by having this layout:
<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="match_parent" app:layout_scrollFlags="scroll|exitUntilCollapsed"> <!-- HEADER --> <RelativeLayout ... app:layout_collapseMode="parallax"> ..... </RelativeLayout> <android.support.v7.widget.Toolbar android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:layout_collapseMode="pin" /> </android.support.design.widget.CollapsingToolbarLayout> <!-- IF YOU WANT TO KEEP "Choose Item" always on top of the RecyclerView, put this TextView here <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" android:text="choose item" /> --> </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" /> </android.support.design.widget.CoordinatorLayout>
You pin your toolbar by having the app:layout_collapseMode="pin"
property set. You make RecyclerView
properly scrollable by setting app:layout_behavior="@string/appbar_scrolling_view_behavior"
and that's pretty much it.
NB! Position of "Choose item" TextView
depends on the particular behaviour you want to achieve:
RecyclerView
's Adapter
to scroll it away, once user start scrolling through the RecyclerView
;AppBarLayout
so it will always stick on top of the RecyclerView
, whenever you scroll it or not;You can read more here Android Design Support Library and here Design Support Library (III): Coordinator Layout
I hope, it helps!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With