web-dev-qa-db-fra.com

Comment définir l'application RecyclerView: layoutManager = "" à partir de XML?

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"/>
135
Ilya Gazman

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">
222
Gabriele Mariotti

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);
74
Mina Fawzy

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"
51
Max

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 ...

12
android developer