Как установить приложение RecyclerView: layoutManager = "" из XML?

Как установить RecyclerView layoutManager из XML?

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

Ответ 1

Как вы можете проверить в документе:

Имя класса диспетчера макетов, который будет использоваться.

Класс должен расширять android.support.v7.widget.RecyclerView $ LayoutManager и иметь конструктор или конструктор по умолчанию с подписью (android.content.Context, android.util.AttributeSet, int, int).

Если имя начинается с ".", Пакет приложения имеет префикс. Иначе, если имя содержит ".", Предполагается, что имя класса является полным именем класса. Иначе, имя пакета представления перезапуска (android.support.v7.widget) имеет префикс.

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

С androidx вы можете использовать:

<androidx.recyclerview.widget.RecyclerView
     xmlns:app="http://schemas.android.com/apk/res-auto"
     app:layoutManager="androidx.recyclerview.widget.GridLayoutManager">

Ответ 2

если вы хотите использовать его с LinearLayoutManager

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

что эквивалентно

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

Ответ 3

И я пришел сюда в поисках версии androidx, хотя это было довольно легко выяснить, вот она

LinearLayoutManager:

app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"

Пример:

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

Пример:

<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"/>

Как видно из приведенных выше примеров, вы можете управлять ориентацией изнутри xml, используя

android:orientation="vertical"

и

android:orientation="horizontal"

И установить количество столбцов для GridLayoutManager, используя

app:spanCount="2"

Ответ 4

Наиболее распространенные из них, которые я использую:

<androidx.recyclerview.widget.RecyclerView
    app:layoutManager="androidx.recyclerview.widget.GridLayoutManager" 
    tools:listitem="@layout/grid_item"
    android:orientation="vertical" app:spanCount="3"/>

А также:

<androidx.recyclerview.widget.RecyclerView
    app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
    tools:listitem="@layout/grid_item"
    android:orientation="vertical"/>

Рекомендуется установить listitem, чтобы вы могли видеть, как он может выглядеть в предварительном просмотре редактора макетов.

Если вы хотите, чтобы порядок изменился, я думаю, что вместо этого вы должны сделать это в коде и использовать "инструменты" в XML, если вы действительно хотите что-то увидеть...