Comment définir RecyclerView layoutManager à partir de XML?
<Android.support.v7.widget.RecyclerView
app:layoutManager="???"
Android:layout_width="match_parent"
Android:layout_height="match_parent"/>
Comme vous pouvez le vérifier dans la doc :
Nom de classe du gestionnaire de disposition à utiliser.
La classe doit étendre Android.support.v7.widget.RecyclerView $ LayoutManager et avoir un constructeur par défaut ou un constructeur avec la signature (Android.content.Context, Android.util.AttributeSet, int, int).
Si le nom commence par '.', Le package d'application est préfixé. Sinon, si le nom contient un '.', Le nom de la classe est supposé être un nom de classe complet. Sinon, le nom du package de la vue recycleur (Android.support.v7.widget) est préfixé.
<Android.support.v7.widget.RecyclerView
xmlns:app="http://schemas.Android.com/apk/res-auto"
app:layoutManager="Android.support.v7.widget.GridLayoutManager" >
Avec Android, vous pouvez utiliser:
<androidx.recyclerview.widget.RecyclerView
xmlns:app="http://schemas.Android.com/apk/res-auto"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager">
si vous voulez l'utiliser avec LinearLayoutManager
<Android.support.v7.widget.RecyclerView
xmlns:app="http://schemas.Android.com/apk/res-auto"
app:layoutManager="Android.support.v7.widget.LinearLayoutManager" >
cet équivalent à
LinearLayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext());
mRecyclerView.setLayoutManager(mLayoutManager);
Et je suis venu ici à la recherche de la version androidx
alors qu’il était assez facile à comprendre, la voici
LinearLayoutManager:
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
Exemple:
<androidx.recyclerview.widget.RecyclerView
Android:id="@+id/recyclerView"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"/>
GridLayoutManager:
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
Exemple:
<androidx.recyclerview.widget.RecyclerView
Android:id="@+id/recyclerView"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical"
app:spanCount="2"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"/>
Comme vous pouvez le voir dans les exemples ci-dessus, vous pouvez contrôler l’orientation à partir de xml
à l’aide de
Android:orientation="vertical"
et
Android:orientation="horizontal"
Et pour définir le nombre de colonnes pour GridLayoutManager en utilisant
app:spanCount="2"
Les plus courantes que j'utilise sont:
<androidx.recyclerview.widget.RecyclerView
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
tools:listitem="@layout/grid_item"
Android:orientation="vertical" app:spanCount="3"/>
Et:
<androidx.recyclerview.widget.RecyclerView
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/grid_item"
Android:orientation="vertical"/>
Il est recommandé de définir listitem
afin que vous puissiez voir à quoi cela ressemble dans l'aperçu de l'éditeur de présentation.
Si vous souhaitez toutefois que l'ordre soit inversé, je pense que vous devez le faire à la place dans le code et utilisez "outils" en XML si vous voulez vraiment voir quelque chose ...