0

Dies ist meine aktuelle XML:Wie setze ich AppBarLayout über den Inhalt?

<android.support.design.widget.CoordinatorLayout 
    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"> 

     <include layout="@layout/some_layout" /> 

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

    <android.support.v7.widget.RecyclerView 
     android:id="@+id/recycler_view" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"/> 
</android.support.design.widget.CoordinatorLayout> 

Gerade jetzt „some_layout“ über die „recycler_view“ und blättert zusammen mit ihm. Ich möchte es so ändern, dass "some_layout" die Recycler-Ansicht überlagert, aber das Scrolling-Verhalten bleibt erhalten (im Grunde sollten beide Ansichten oben ausgerichtet sein, wenn kein Scrollen stattfindet und "some_layout" sollte nach dem Scrollen verschwinden). Ist es möglich, mit CoordinatorLayout zu tun?

Antwort

0

Wenn ich Ihr Problem richtig verstanden habe, möchten Sie die Appbar überlagern Sie Inhalt (RecyclerView), richtig?

Obwohl ich diese Lösung nicht verifiziert habe, basiert sie auf this answer. Lass mich wissen, ob das funktioniert.


Extend AppBarLayout.ScrollingViewBehavior durch neue MyAppBarScrollingViewBehavioronDependentViewChanged() zwingende und updateOffset() zu offset = 0

@Override 
public boolean onDependentViewChanged(CoordinatorLayout parent, View child, 
     View dependency) { 
    updateOffset(parent, child, dependency); 
    return false; 
} 

private boolean updateOffset(CoordinatorLayout parent, View child, 
     View dependency) { 
    final CoordinatorLayout.Behavior behavior = ((CoordinatorLayout.LayoutParams) dependency 
      .getLayoutParams()).getBehavior(); 
    if (behavior instanceof Behavior) { 
     // Offset the child so that it is below the app-bar (with any 
     // overlap) 
     final int offset = 0; // CHANGED TO 0 
     setTopAndBottomOffset(offset); 
     return true; 
    } 
    return false; 
} 

Set Verhaltensänderungen auf RecyclerView

<android.support.v7.widget.RecyclerView 
    android:id="@+id/main_content" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    ... 
    layout_behavior="MyAppBarScrollingViewBehavior" /> 
Verwandte Themen