2016-02-28 14 views
66

Come impostare RecyclerView layoutManager da XML?Come impostare l'app RecyclerView: layoutManager = "" da XML?

<android.support.v7.widget.RecyclerView 
     app:layoutManager="???" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"/> 
+0

vedere la documentazione: [recyclerview: LayoutManager] (http://developer.android.com /reference/android/support/v7/widget/RecyclerView.html#attr_android.support.v7.recyclerview:layoutManager) –

+1

@dieter_h puoi fornire una risposta wi esempio di GridLayoutManager? –

+2

Puoi usare 'app: layoutManager =" android.support.v7.widget.GridLayoutManager "'. Verranno utilizzati i costruttori con quattro argomenti ('Context',' AttributeSet', 'int',' int'). Secondo la documentazione questo è il _constructor utilizzato quando il gestore di layout è impostato in XML dal layoutManager di attributo RecyclerView. Se spanCount non è specificato nell'XML, il valore predefinito è una singola colonna_ – thetonrifles

risposta

121

Come è possibile controllare in the doc:

nome della classe il gestore di layout da utilizzare.

La classe deve estendere android.support.v7.widget.RecyclerView $ LayoutManager e avere un costruttore o costruttore predefinito con la firma (android.content.Context, android.util.AttributeSet, int, int).

Se il nome inizia con un '.', Il pacchetto dell'applicazione è prefisso. Altrimenti, se il nome contiene un '.', Si presuppone che il nome della classe sia un nome di classe completo. Altrimenti, il nome del pacchetto di visualizzazione del recycler (android.support.v7.widget) è prefisso.

<android.support.v7.widget.RecyclerView 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    app:layoutManager="android.support.v7.widget.GridLayoutManager" > 
+19

E puoi utilizzare 'android: orientation' sull'elemento RecyclerView per controllare l'orientamento di ad es. LinearLayoutManager – user3175580

+1

@Gabriele Mariotti Ho controllato l'implementazione e utilizza la riflessione. Va bene per quanto riguarda le prestazioni? –

+1

A partire da questo commento sembra che i documenti non abbiano più questa utile spiegazione. È così frustrante che @Google non riesca nemmeno a mantenere i loro documenti corretti. –

35

se si desidera utilizzarlo con LinearLayoutManager

<android.support.v7.widget.RecyclerView 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    app:layoutManager="android.support.v7.widget.LinearLayoutManager" > 

che equivale a

LinearLayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext()); 
mRecyclerView.setLayoutManager(mLayoutManager); 
+1

Qual è la tua aggiunta alla risposta di Gabriele Mariotti? –

+2

spiega cosa equivale a nel codice ma con un altro esempio LinearLayout –

+0

Cosa succede se si desidera utilizzare il gestore di layout lineare orizzontale? –

Problemi correlati