Android 将可组合高度调整为与宽度相同
我试图在Jetpack Compose中实现一个具有2列的网格UI 我的要求是Android 将可组合高度调整为与宽度相同,android,android-jetpack-compose,Android,Android Jetpack Compose,我试图在Jetpack Compose中实现一个具有2列的网格UI 我的要求是 每个项目的宽度必须是父项宽度的一半(减去填充等) 高度必须相同,以便项目为正方形 在这里面,我应该能够做其他的事情,比如在列中使用权重 这应该如下所示 <-- parent width --> ____ ____ | | | | |____| |____| ____ ____ | | | | |____| |____| ... and more it
- 每个项目的宽度必须是父项宽度的一半(减去填充等)
- 高度必须相同,以便项目为正方形
- 在这里面,我应该能够做其他的事情,比如在
列中使用
权重
<-- parent
width -->
____ ____
| | | |
|____| |____|
____ ____
| | | |
|____| |____|
... and more items
这将创建以下UI
由于下一个行
有空间,因此显示的曲面布局正确。但该柱似乎没有达到全高。这也意味着列项目的weight()
不起作用。将weight
修饰符添加到列子项会使它们消失
我该如何解决上述问题,让孩子们知道身高并达到预期效果
作为参考,我正在使用Jetpack Composealpha09
更新:我尝试过使用首选高度(IntrinsicSize.Max)
,它似乎工作得更好,但它确实需要将代码标记为@experimentalYout
,因此如果有其他可用选项,我宁愿先不使用它。自己为平铺设置约束,根据瓷砖的宽度:
layout { measurable, constraints ->
val tileSize = constraints.maxWidth / columnCount
val placeable = measurable.measure(constraints.copy(
minWidth = tileSize,
maxWidth = tileSize,
minHeight = tileSize,
maxHeight = tileSize,
))
layout(placeable.width, placeable.width) {
placeable.place(x = 0, y = 0, zIndex = 0f)
}
}
有关完整示例,请参见
layout { measurable, constraints ->
val tileSize = constraints.maxWidth / columnCount
val placeable = measurable.measure(constraints.copy(
minWidth = tileSize,
maxWidth = tileSize,
minHeight = tileSize,
maxHeight = tileSize,
))
layout(placeable.width, placeable.width) {
placeable.place(x = 0, y = 0, zIndex = 0f)
}
}