我可以在GridLayoutManager中以百分比设置列的宽度吗?

问题描述 投票:0回答:1

我有一个包含RecyclerView的警告对话框。回收站中的每个项目都是一个简单的复选框。我需要在三列中绘制它。

为此,我使用GridLayoutManager

layoutManager = GridLayoutManager(context, 3, GridLayoutManager.HORIZONTAL, false)

我看到的结果就是这个

enter image description here

不错。问题是我需要将每列的宽度设置为对话框宽度的33%。我的复选框的宽度没有任何固定宽度,因为文字可能会有所不同。这是用于回收商的布局。

<layout xmlns:android="http://schemas.android.com/apk/res/android">

    <data>
        <variable name="item" type="..." />
    </data>

    <CheckBox
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:checked="@={item.enabled}"
        android:text="@{item.name}"
        android:minWidth="40dp"/>

</layout>

创建我的Recycler,其宽度等于父级

 <android.support.v7.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

任何想法如何设置宽度百分比?

android gridlayoutmanager
1个回答
2
投票

如果你的RecyclerView布局正确,你可以通过覆盖ViewHolder中的布局参数强制LayoutManager大小:

layoutManager = object : GridLayoutManager(context, 3, GridLayoutManager.HORIZONTAL, false){
    override fun checkLayoutParams(lp: RecyclerView.LayoutParams) : Boolean {
        // force width of viewHolder to be a fraction of RecyclerViews
        // this will override layout_width from xml
        lp.width = width / spanCount
        return true
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.