2015-07-09 29 views
24

Ho una RecyclerView personalizzata e una barra degli strumenti che si nasconde quando si scorre verso il basso e appare quando si scorre verso l'alto. Ho un problema con la posizione di RecyclerView, è sotto la barra degli strumenti, utilizzo il comportamento ma sembra non funzionare.Android RecyclerVista sotto la barra degli strumenti

mio xml:

<?xml version="1.0" encoding="utf-8"?> 
<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/coordinatorLayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <android.support.v7.widget.RecyclerView 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/recyclerView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"/> 

    <android.support.design.widget.AppBarLayout 
     android:id="@+id/appBarLayout" 
     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|enterAlways" /> 

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

    <android.support.v4.view.ViewPager 
     android:id="@+id/viewPager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"/> 

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

perché hai sia RecyclerView che ViewPager layout_width e layout_height come "match_parent"? –

+0

Stai cercando un layout di barra degli strumenti compresso? dove la barra degli strumenti si espande per adattarsi a un'intestazione e quindi collassa nella barra degli strumenti? Se non hai bisogno del layout comprendente della barra degli strumenti probabilmente non hai bisogno di AppBarLayout. Se vuoi solo nascondere e mostrare la barra degli strumenti, puoi farlo con un semplice OnScrollListener. – doubleA

risposta

40
<?xml version="1.0" encoding="utf-8"?> 
<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/coordinatorLayout" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical"> 

<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.AppBarLayout 
    android:id="@+id/appBarLayout" 
    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|enterAlways" /> 

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

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

Prova questo. Ho rimosso ViewPager e aggiunto il comportamento di scorrimento a RecyclerView

+0

Funziona ma c'è un altro problema. Se scorro verso il basso e vai in un'altra app quando la barra è nascosta quando apro di nuovo la mia app la barra degli strumenti sarà bianca senza tutto. – user4789408

+0

Ha funzionato! Ma c'è una linea che posso vedere. Come funziona il trucco e come posso risolvere in modo migliore? – user4789408

+0

Non ne ho idea, lol. In effetti è un trucco che ho trovato su SO qualche tempo fa. Lo uso da allora e non ho ancora ricevuto alcun errore. –

30

Ho dovuto assegnare il riempimento a recyclerview che equivale alla barra degli strumenti/barra delle azioni (barra dell'app) altezza.

android:paddingTop="?attr/actionBarSize" 

aggiungere la riga sopra al file recyclerview xml

+2

Questo trucco funziona ma mentre la vista di scorrimento scorre e il layout dell'appbar viene nascosto, il riempimento appare strano. –

+0

potresti fornire maggiori dettagli in quanto non ho affrontato questo problema, la schermata sarebbe ideale –

+1

La migliore risposta finora. – Marlon

1

È necessario aggiungere questo attributo al RecyclerView:

app:layout_behavior="@string/appbar_scrolling_view_behavior" 

cioè:

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

Quando mi hanno incluso RecyclerView da un altro layout si è verificato lo stesso problema. Ho aggiunto questa riga seguente su recyclerview e il problema non persiste più.

app:layout_behavior="@string/appbar_scrolling_view_behavior" 

Mancare questa riga sopra farà questo problema.

Problemi correlati