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

102

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

    <android.support.v7.widget.RecyclerView
        app:layoutManager="???"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
  • 0
    Смотрите документацию : утилитаризация: layoutManager
  • 1
    @dieter_h Можете ли вы дать ответ на примере GridLayoutManager?
Показать ещё 1 комментарий
Теги:
android-recyclerview

4 ответа

180
Лучший ответ

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

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

Класс должен расширять 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">
  • 46
    И вы можете использовать android:orientation на элемент RecyclerView для управления ориентацией, например, LinearLayoutManager
  • 2
    @Gabriele Mariotti Я проверил реализацию, и она использует отражение. Это нормально с точки зрения производительности?
Показать ещё 9 комментариев
73

если вы хотите использовать его с 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);
  • 1
    Каково ваше дополнение к ответу Габриэле Мариотти?
  • 2
    объяснить, что эквивалентно в коде, но с другим примером LinearLayout
Показать ещё 4 комментария
34

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

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

для GridLayoutManager

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

и для горизонтального RecyclerView

android:orientation="horizontal"
  • 2
    Вы можете установить нет. столбцов при использовании GridLayoutManager путем добавления app:spanCount="2"
  • 0
    совместимый с будущим подход.
0

пожалуйста, посетите:

https://android.jlelse.eu/android-dtt-13-how-to-set-recyclerviews-layoutmanager-in-xml-and-why-you-shouldn-t-350da048a801

Для этого не рекомендуется использовать xml.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню