android 如何确保`LazyVerticalGrid`居中并尽可能小

vsdwdz23  于 2023-06-27  发布在  Android
关注(0)|答案(1)|浏览(142)

我得到了这个代码:

val emojis = listOf("A", "B")

Column {
    Text(text = "Hi")

    LazyVerticalGrid(
        columns = GridCells.Fixed(emojis.size),
        horizontalArrangement = Arrangement.Center,
        verticalArrangement = Arrangement.Center,
        content = {
            this.items(items = emojis) {
                Text(text = it, style = MaterialTheme.typography.h6)
            }
        })
}

它给了我这个结果:

这不是我想要的,我希望所有的项目都占用它们所需要的空间,布局应该从中间开始,而不是Start

uhry853o

uhry853o1#

不幸的是,你不能用Lazy布局来做这件事。你需要的是创建一个自定义布局,它将在设置宽度之前测量孩子的大小。你可以找到如何在here上实现它。
如果您已经知道项目的大致宽度,则可以设置最大和最小宽度。这不是你需要的,但我认为这是你能得到的最接近的。

LazyVerticalGrid(
        columns = GridCells.Fixed(emojis.size),
        horizontalArrangement = Arrangement.Center,
        verticalArrangement = Arrangement.Center,
        modifier = Modifier.background(Color.Yellow).wrapContentWidth(unbounded = true).widthIn(min = 0.dp, max = 100.dp),
        content = {
            items(emojis.size) {
                Text(text = emojis[it], style = MaterialTheme.typography.headlineMedium, modifier = Modifier.wrapContentSize())
            }
        })

相关问题