我有一个包含RecyclerView
的警报对话框。回收站中的每个项目都是一个简单的复选框。我需要将其绘制成三列。
为此,我使用GridLayoutManager
layoutManager = GridLayoutManager(context, 3, GridLayoutManager.HORIZONTAL, false)
我看到的结果是这个
不错。问题是我需要将每列的宽度设置为对话框宽度的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>
我的回收站的宽度等于父级宽度
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="wrap_content" />
有什么想法如何以百分比设置宽度?
答案 0 :(得分: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
}
}