2015-07-29 13 views
5

Ho una pagina con un effetto di compressione della barra delle azioni simile a questo: http://xmodulo.com/hide-show-toolbar-scrolling-android.html. Ma voglio che la barra delle azioni mostri solo quando la lista mostra già il primo oggetto, non immediatamente ogni volta che scorro verso il basso. Come posso raggiungere questo obiettivo?Comprime la barra delle azioni ma mostra solo quando RecyclerView visualizza completamente il primo elemento

+0

Dipende dalla vostra implementazione. Puoi per favore ricordare come stai ottenendo questo effetto? Usando una libreria o gestendo ogni cosa nel tuo codice? –

+0

l'implementazione è collegata alla mia domanda, è così che sto ottenendo l'effetto. – josephus

+0

Attualmente non c'è modo di ottenere quell'effetto. Se si specifica app: layout_scrollFlags = "scroll" al posto dell'app: layout_scrollFlags = "scroll | enterAlways" alla barra degli strumenti, non verrà mai più indietro. Un modo per ottenerlo è Usa la barra degli strumenti come intestazione per visualizzare una lista o una vista a griglia. In questo modo si aprirà e nel modo desiderato –

risposta

2

La libreria di progettazione ha un componente denominato AppBarLayout per eseguire ciò.

includere la libreria:

dependencies { 
    compile 'com.android.support:design:22.2.0' 
} 

Avvolgere il Toolbar in un AppBarLayout con i scrollFlags impostati a 'scorrimento', avvolgere l'intero layout in un CoordinatorLayout, e aggiungere impostare la layout_behavior della visualizzazione scorrimento a @string/appbar_scrolling_view_behavior.

<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:id="@+id/appbar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:background="?attr/colorPrimary" 
      app:layout_scrollFlags="scroll"/> 

     <!-- If you have tabs you can include them below the toolbar --> 
     <android.support.design.widget.TabLayout 
      android:id="@+id/tabs" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 

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

    <!-- If you use a ViewPager, just add the layout_behavior to it instead of the RecyclerView --> 
    <android.support.v7.widget.RecyclerView 
     android:id="@+id/recyclerView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"/> 

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

Questo è il contenuto esatto del tutorial che ho collegato, sono in grado di farlo senza alcun problema. Quello che mi interessa, come menzionato nella mia domanda, è che voglio che la barra delle azioni si mostri solo quando la lista mostra già il primo oggetto, non immediatamente ogni volta che scorro verso il basso. Un po 'come un'intestazione non appiccicosa al viewpager, ma scorre dentro o fuori in sincronia con il primo elemento del recyclerview. – josephus

+0

Il tuo tutorial non usa nemmeno la libreria di progettazione. – tachyonflux

+1

Giusto, scusate ho dimenticato quale tutorial ho collegato (la mia domanda è in giro da giorni, e sto ancora cercando). Ma ho provato a usare anche il metodo CoordinatorLayout, e ha lo stesso effetto di quello che il tutorial stava cercando di fare. Ho anche provato a giocare con i diversi valori possibili di layout_scrollFlags. Speravo che "enterAlwaysCollapsed" con un minimo di 0dip lo facesse, ma no. – josephus

Problemi correlati