android 如何在不使用重量的情况下在jetpack组合中居中元素?

brccelvz  于 2023-06-04  发布在  Android
关注(0)|答案(1)|浏览(228)

我有以下可组合

Box (modifier = Modifier
        .background(MaterialTheme.colorScheme.primary)
        .then(modifier)) {
    Row {
        CircularProgressIndicator(modifier = Modifier.align(Alignment.CenterVertically))
        Column {
            Text(text = "Title", fontSize = 24.sp, color = Color.White)
            Text(text = "Subtitle", fontSize = 18.sp, color = Color.LightGray)
        }
        Button(
            modifier = Modifier
                .align(Alignment.CenterVertically)
        ) { ... }            
    }
}

我想按以下方式水平对齐控件:

  • 左对齐CircularProgressIndicator(与父项左对齐)
  • 中心对齐Column
  • 右对齐Button(与父项右对齐)

我可以很容易地通过将weight(1f)添加到列中来实现,但这会导致Box增加宽度以占用所有可用空间。我不想那样
为什么
因为这个组合件用在两个地方:在一个地方使用“ Package 内容”宽度,在另一个地方使用“填充可用空间”宽度。列的居中对齐在“填充可用空间”模式下很有用。
如果我使用weight,就我所测试的而言,我不能使用“ Package 内容”。

编辑

如果我使用weight(1f, false),这就是当显示Box以填充可用宽度时所看到的

----------------------------------------------------
| CPI | COL | BUT |           EMPTY SPACE          |
----------------------------------------------------
ercv8c1e

ercv8c1e1#

您应该应用以下更改。首先,你应该像这样修改你的Row

Row(modifier = Modifier.fillMaxWidth()) {
    ...
}

那么你应该像这样修改你的

Column(
    modifier = Modifier.weight(1f),
    horizontalAlignment = Alignment.CenterHorizontally
) {
    ...
}

应该和你描述的一样

相关问题