5

Ich habe CoordinatorLayout wie in Blog beschrieben: http://android-developers.blogspot.ru/2015/05/android-design-support-library.htmlWie werden komprimierte Elemente in CoordinatorLayout programmgesteuert angezeigt?

<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> 

Innen AppBarLayout Ich habe Toolbar und TextView mit zusätzlichen Statusinformationen. AppBarLayout kann nach dem Scrollen reduziert werden. Manchmal muss ich AppBarLayout anzeigen, um den geänderten Status anzuzeigen.

Wie programmgesteuert?

Antwort

15

Wie in other comment erwähnt:

Mit Unterstützung Libs V23 können Sie anrufen appBarLayout.setExpanded(true/false)

+0

Das funktioniert perfekt für mich. – Jigar

+1

Warum wird dies nicht als Antwort akzeptiert? funktioniert perfekt. – KunalK

2

Aufgrund von Tuấn Trần Anh answear gründete here, können Sie diese beiden Methoden verwenden CoordinatorLayout programaticly zum Einsturz und aufwenden:

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]); 
    } 
} 
0

In meinem Fall verwende ich diese Lösung

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); 
     } 
    } 
} 

für Kraft zeigt, Appbarlayout. Reset gescrollt Blick auf appbarLayout max Scroll-Bereich und appBarLayout Position starten = 0.