Search code examples
androidandroid-coordinatorlayoutandroid-collapsingtoolbarlayout

How to collapse layouts in order?


I am trying to make collapsing toolbar, where

  • Toolbar always at same space
  • When I scroll bottom, collapsing_2 should collapse first, and only after collapsin_1 should collapse
  • When I scroll top, collapsing_1 enters always and collapsing_2 enters only when recyclerview content riched top.

But in my layout both blocks move simultaneously (or as one if i place both relative layouts inside same collapsing 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:orientation="vertical">

  <android.support.design.widget.AppBarLayout
    android:id="@+id/app_bar_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/white">

    <android.support.design.widget.CollapsingToolbarLayout
      android:id="@+id/collapsing_1"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:minHeight="56dip"
      android:orientation="vertical"
      app:layout_scrollFlags="scroll|enterAlways|exitUntilCollapsed">


      <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="56dip">

      </RelativeLayout>

      <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="56dip"
        android:background="@color/white"
        android:minHeight="56dip"
        app:layout_collapseMode="pin"/>

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

    <android.support.design.widget.CollapsingToolbarLayout
      android:id="@+id/collapsing_2"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      app:layout_scrollFlags="scroll">


      <RelativeLayout 
        android:id="@+id/holder_event"
        android:layout_width="match_parent"
        android:layout_height="195dip"
        app:layout_collapseMode="parallax"
        app:layout_scrollFlags="scroll">

      </RelativeLayout>


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

Solution

  • I achived it with following form. Collapsing 2 is places below collapsing 1 via margin, its also hase only scroll flag. While collapsing one has enter always and mode pin, which keeps collapsin 1 at place until there is extra uncollapsed space

      <android.support.design.widget.AppBarLayout
        android:id="@+id/app_bar_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/white">
    
        <android.support.design.widget.CollapsingToolbarLayout
          android:id="@+id/ll_collapsing"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:minHeight="56dip"
          android:orientation="vertical"
          app:layout_scrollFlags="scroll|exitUntilCollapsed">
    
    
          <RelativeLayout
            android:id="@+id/colapsing_2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="285dp"
            app:layout_collapseMode="parallax"
            app:layout_scrollFlags="scroll">
          </RelativeLayout>
    
          <LinearLayout
            android:id="@+id/colapsing_1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:minHeight="56dip"
            android:orientation="vertical"
            app:layout_collapseMode="pin"
            app:layout_scrollFlags="scroll|enterAlways">
    
          </LinearLayout>
    
          <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="56dip"
            android:background="@color/white"
            android:minHeight="56dip"
            app:layout_collapseMode="pin">
          </android.support.v7.widget.Toolbar>
        </android.support.design.widget.CollapsingToolbarLayout>
    
    
      </android.support.design.widget.AppBarLayout>