如何从XML设置RecyclerView app:layoutManager =""?

Ily*_*man 143 xml android android-recyclerview androidx

如何从XML 设置RecyclerView layoutManager?

    <android.support.v7.widget.RecyclerView
        app:layoutManager="???"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
Run Code Online (Sandbox Code Playgroud)

Gab*_*tti 234

您可以查看文档:

要使用的布局管理器的类名.

该类必须扩展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" >
Run Code Online (Sandbox Code Playgroud)

使用androidx你可以使用:

<androidx.recyclerview.widget.RecyclerView
     xmlns:app="http://schemas.android.com/apk/res-auto"
     app:layoutManager="androidx.recyclerview.widget.GridLayoutManager">
Run Code Online (Sandbox Code Playgroud)

  • 你可以在RecyclerView元素上使用`android:orientation`来控制例如LinearLayoutManager的方向 (66认同)
  • 如果我使用GridLayoutManager,是否有更多可用属性?是否可以设置其列数(spanCount)? (4认同)
  • @Gabriele Mariotti我检查了实现并使用了反射.表现明智可以吗? (3认同)
  • @androiddeveloper是的,例如将它设置为三列使用app:spanCount ="3" (3认同)
  • 您还可以使用“tools:layoutManager,tools:spanCount”(即使自动完成不会显示它),并且如果您不想覆盖任何 recyclerview 设置(或者更喜欢以编程方式) (2认同)

Min*_*wzy 80

如果你想用它 LinearLayoutManager

<android.support.v7.widget.RecyclerView
    xmlns:app="http://schemas.android.com/apk/res-auto"
    app:layoutManager="android.support.v7.widget.LinearLayoutManager" >
Run Code Online (Sandbox Code Playgroud)

相当于

LinearLayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext());
mRecyclerView.setLayoutManager(mLayoutManager);
Run Code Online (Sandbox Code Playgroud)

  • androidx的androidx.recyclerview.widget.LinearLayoutManager (7认同)
  • @UdiOshi使它成为水平,你需要在RecyclerView xml中添加`android:orientation ="horizo​​ntal"` (5认同)
  • 解释代码中的等价物,但用另一个例子说明LinearLayout (3认同)
  • 您对 Gabriele Mariotti 的回答有何补充? (2认同)

Max*_*Max 60

我来这里寻找androidx版本虽然很容易弄明白,但现在它是

app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
Run Code Online (Sandbox Code Playgroud)

对于 xml

<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"/>
Run Code Online (Sandbox Code Playgroud)

并为水平 androidx

app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
Run Code Online (Sandbox Code Playgroud)

  • 您可以设置不。通过添加`app:spanCount =“ 2”`使用GridLayoutManager时的列数 (6认同)

and*_*per 13

我最常用的是:

<androidx.recyclerview.widget.RecyclerView
    app:layoutManager="androidx.recyclerview.widget.GridLayoutManager" 
    tools:listitem="@layout/grid_item"
    android:orientation="vertical" app:spanCount="3"/>
Run Code Online (Sandbox Code Playgroud)

和:

<androidx.recyclerview.widget.RecyclerView
    app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
    tools:listitem="@layout/grid_item"
    android:orientation="vertical"/>
Run Code Online (Sandbox Code Playgroud)

建议设置listitem,以便在布局编辑器的预览中看到它的外观。

如果您想颠倒顺序,我想您必须用代码代替,如果您真的想看些东西,可以在XML中使用“工具”。