How to programmatically display collapsed elements in CoordinatorLayout?

I have a CoordinatorLayout , as described on the blog: http://android-developers.blogspot.ru/2015/05/android-design-support-library.html

 <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.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.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <android.support.v7.widget.Toolbar ... app:layout_scrollFlags="scroll|enterAlways"> <TextView ... app:layout_scrollFlags="scroll|enterAlways"> </android.support.design.widget.AppBarLayout> </android.support.design.widget.CoordinatorLayout> 

Inside the AppBarLayout I have a Toolbar and TextView with additional status information. AppBarLayout can be minimized (after scrolling). Sometimes I need to show AppBarLayout to show the changed status.

How to do this programmatically?

+5
source share
3 answers

As mentioned in another comment :

Using libs v23 support, you can call appBarLayout.setExpanded(true/false)

+15
source

Due to the response from Tuแบฅn Trแบงn Anh , based here , you can use these two methods to crash and CoordinatorLayout programmatically:

 public void collapseToolbar(){ CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) appbarLayout.getLayoutParams(); behavior = (AppBarLayout.Behavior) params.getBehavior(); if(behavior!=null) { behavior.onNestedFling(rootLayout, appbarLayout, null, 0, 10000, true); } } public void expandToolbar(){ CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) appbarLayout.getLayoutParams(); behavior = (AppBarLayout.Behavior) params.getBehavior(); if(behavior!=null) { behavior.setTopAndBottomOffset(0); behavior.onNestedPreScroll(rootLayout, appbarLayout, null, 0, 1, new int[2]); } } 
+2
source

In my case, I use this solution

  public void resetAppBarLayout() { if (mContentContainer != null) { final AppBarLayout.ScrollingViewBehavior container_behavior = ((AppBarLayout.ScrollingViewBehavior) ((CoordinatorLayout.LayoutParams) mContentContainer.getLayoutParams()).getBehavior()); if (container_behavior != null) { container_behavior.setTopAndBottomOffset(appBarLayout.getTotalScrollRange()); } final AppBarLayout.Behavior appbar_behavior = ((AppBarLayout.Behavior) ((CoordinatorLayout.LayoutParams) appBarLayout.getLayoutParams()).getBehavior()); if (appbar_behavior != null) { appbar_behavior.setTopAndBottomOffset(0); } } } 

for power featuring appbarlayout. Reset scrolls the view to the scrollbar appbarLayout max and appBarLayout to start position = 0.

0
source

All Articles