Android RecyclerView GridLayoutManager居中查看项目并保持相同宽度
我正在使用布局管理器将此Android RecyclerView GridLayoutManager居中查看项目并保持相同宽度,android,android-recyclerview,gridlayoutmanager,android-flexboxlayout,Android,Android Recyclerview,Gridlayoutmanager,Android Flexboxlayout,我正在使用布局管理器将此RecyclerView配置为: recyclerView.setLayoutManager(new GridLayoutManager(this, 3)); 我的具体情况是,子项没有预定义的宽度。相反,我将它们的宽度设置为 android:layout_width="match_parent" 然后我希望GridLayoutManager为每个项目提供1/3的可用空间 到目前为止还不错,但我希望如果最后一行中只有1或2个项目要显示,我希望将它们居
RecyclerView
配置为:
recyclerView.setLayoutManager(new GridLayoutManager(this, 3));
我的具体情况是,子项没有预定义的宽度。相反,我将它们的宽度设置为
android:layout_width="match_parent"
然后我希望GridLayoutManager
为每个项目提供1/3的可用空间
到目前为止还不错,但我希望如果最后一行中只有1或2个项目要显示,我希望将它们居中
我尝试了解决方案,但得到的结果是:
正如您在最后一行中所看到的,项目被拉伸到布局的边缘,并且父项的宽度在它们之间被划分。这是因为正如我所说,它们的宽度没有预先确定
我期望的是计算项目宽度,因为每行显示3个项目,然后将其居中。如图所示:
有什么方法可以让我用
GridLayoutManager
或者甚至用FlexboxLayoutManager
来实现这一点吗?你可以通过在GridLayout
中使用线性布局来实现这一效果,我的答案对你有帮助吗?:)@不幸的是,这并不能解决我的问题。我希望项目之间有相同的大小和相同的距离。如果最后一行中的项目更加居中,并且与第一行中的项目保持相同的距离,则可以接受您的解决方案。谢谢你的回答。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
tools:ignore="MissingConstraints"
android:layout_marginTop="20dp"
android:id="@+id/l1">
<Space
android:layout_width="0dp"
android:layout_height="1dp"
android:layout_weight="1">
</Space>
<ImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:background="#000000" />
<Space
android:layout_width="0dp"
android:layout_height="1dp"
android:layout_weight="1">
</Space>
<ImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:background="#000000" />
<Space
android:layout_width="0dp"
android:layout_height="1dp"
android:layout_weight="1">
</Space>
<ImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:background="#000000" />
<Space
android:layout_width="0dp"
android:layout_height="1dp"
android:layout_weight="1">
</Space>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
tools:ignore="MissingConstraints"
android:layout_below="@+id/l1"
android:layout_marginTop="20dp"
>
<Space
android:layout_width="0dp"
android:layout_height="1dp"
android:layout_weight="1">
</Space>
<ImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:background="#000000" />
<Space
android:layout_width="0dp"
android:layout_height="1dp"
android:layout_weight="1">
</Space>
<ImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:background="#000000" />
<Space
android:layout_width="0dp"
android:layout_height="1dp"
android:layout_weight="1">
</Space>
</LinearLayout>
</RelativeLayout>