6

Ho un LinearLayout che voglio nascondere quando faccio scorrere verso l'alto sul mio RecyclerView e riappare quando scorro verso il basso; il comportamento dovrebbe essere proprio come la barra degli strumenti si nasconde e riappare.CoordinatorLayout con RecyclerView

Questo è quello che ho finora:

<android.support.design.widget.CoordinatorLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

    <LinearLayout 
     android:id="@+id/viewToHideOnScroll 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     <!-- other stuff inside the LinearLayout --> 

    </LinearLayout> 

    <RecyclerView 
     android:id="@+id/recyclerView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"/> 

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

Da quello che posso capire finora, posso specificare un valore app:layout_behavior su viewToHideOnScroll in modo che scorre liscio dentro e fuori di vista secondo per scorrere gli eventi su recyclerView. Per fare ciò, devo scrivere una classe personalizzata ViewToHideOnScrollBehavior e sovrascrivere layoutDependsOn e qualche altro metodo (onNestedScroll?).

Se questo è corretto, qui è quello che ho:

public class ViewToHideOnScrollBehavior extends CoordinatorLayout.Behavior<LinearLayout> { 

public ViewToHideOnScrollBehavior(Context context, AttributeSet attrs) {} 

    @Override 
    public boolean layoutDependsOn(CoordinatorLayout parent, LinearLayout child, View dependency) { 
     return dependency instanceof RecyclerView; 
    } 

    // some other method to override, I don't know 
} 

Qualcuno può darmi un suggerimento, o sto facendo questo tutto sbagliato?

Ho seguito https://lab.getbase.com/introduction-to-coordinator-layout-on-android/

risposta

18

bisogna mettere LinearLayout all'interno di layout AppBar quando l'utente scorrere il layout lineare è nascondere devi creare file XML come qui di seguito.

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res-auto" 
     android:id="@+id/main_content" 
     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"> 

    <LinearLayout 
       android:id="@+id/lytSearchBar" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:background="@color/colorPrimary" 
       android:gravity="center_vertical" 
       android:orientation="horizontal" 
       android:padding="@dimen/fivedp" 
       app:layout_scrollFlags="scroll|enterAlways" // layout_scrollFlags for scroll layout 
       android:visibility="visible"> 

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

     <android.support.v7.widget.RecyclerView 
      android:id="@+id/rvOrderList" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_below="@id/lytSearchBar" 
      android:paddingTop="@dimen/tendp" 
      app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 

in RecyclerView non dimenticate di aggiungere l'attributo app: layout_behaviour come visto in precedenza xml.

+0

Grazie @Darshan Mistry! Quindi l'AppBarLayout non è limitato alle barre degli strumenti .. – squeeish

Problemi correlati