如何从 XML设置RecyclerView layoutManager?
<android.support.v7.widget.RecyclerView
app:layoutManager="???"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
如何从 XML设置RecyclerView layoutManager?
<android.support.v7.widget.RecyclerView
app:layoutManager="???"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
正如您可以查看文档:
Layout Manager
要使用的类名。该类必须扩展
androidx.recyclerview.widget.RecyclerViewView$LayoutManager
并具有默认构造函数或带有签名的构造函数(android.content.Context, android.util.AttributeSet, int, int)
如果名称以 开头
'.'
,则应用程序包为前缀。否则,如果名称包含 a'.'
,则假定类名是完整的类名。否则,recycler 视图包 (androidx.appcompat.widget
) 是前缀
使用androidx,您可以使用:
<androidx.recyclerview.widget.RecyclerView
xmlns:app="http://schemas.android.com/apk/res-auto"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager">
使用支持库,您可以使用:
<android.support.v7.widget.RecyclerView
xmlns:app="http://schemas.android.com/apk/res-auto"
app:layoutManager="android.support.v7.widget.GridLayoutManager" >
您还可以添加以下属性:
android:orientation
= "horizontal|vertical"
:控制 LayoutManager 的方向(例如LinearLayoutManager
:)app:spanCount
: 设置列数GridLayoutManager
例子:
<androidx.recyclerview.widget.RecyclerView
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
app:spanCount="2"
...>
或者:
<androidx.recyclerview.widget.RecyclerView
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
android:orientation="vertical"
...>
您还可以使用tools
命名空间(即tools:orientation
和tools:layoutManager
)添加它们,然后它只会影响 IDE 预览,您可以继续在代码中设置这些值。
我来这里寻找androidx
版本虽然很容易弄清楚,但它是
线性布局管理器:
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"/>
网格布局管理器:
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"
如果你想用它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);
我最常用的是:
<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 中使用“工具”...
这对我有用 - 只需添加app:layoutManager="LinearLayoutManager"
,你就可以开始了
<android.support.v7.widget.RecyclerView
android:id="@+id/recordItemList"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:clipToPadding="false"
android:scrollbars="none"
app:layoutManager="LinearLayoutManager"
app:stackFromEnd="true"
app:reverseLayout="true"/>
您可以像这样为 recyclerview 设置布局管理器, app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"