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

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

我得到了这个代码:

  1. val emojis = listOf("A", "B")
  2. Column {
  3. Text(text = "Hi")
  4. LazyVerticalGrid(
  5. columns = GridCells.Fixed(emojis.size),
  6. horizontalArrangement = Arrangement.Center,
  7. verticalArrangement = Arrangement.Center,
  8. content = {
  9. this.items(items = emojis) {
  10. Text(text = it, style = MaterialTheme.typography.h6)
  11. }
  12. })
  13. }

它给了我这个结果:

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

uhry853o

uhry853o1#

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

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

相关问题