11

我正在使用新品牌 KotlinCompose作为我的视图,我有一排有 2 件物品,我怎样才能让它们center-vertical像一样?

    Row(
            modifier = Spacing(20.dp)
    ) {
        Text(text = "Hello $name!")
        Spacing(10.dp)
        Padding(padding = 25.dp) {
            Button(text = "Click", onClick = { /*do something*/ })

        }
    }

在此处输入图像描述

请注意,如果没有填充,它们也不会对齐。

4

5 回答 5

18

在Row中有verticalAlignment争论。您还可以使用覆盖行的align修饰符单独配置项目对齐方式。例如:verticalAlignment

@Composable
fun RowAlignmentExample() {
    Row(verticalAlignment = Alignment.CenterVertically) {
        SizeTile(14)
        SizeTile(18)
        SizeTile(22)
        SizeTile(26)
        SizeTile(10, modifier = Modifier.align(Alignment.Top))
        SizeTile(10, modifier = Modifier.align(Alignment.Bottom))
    }
}

@Composable
fun SizeTile(fontSize: Int, modifier: Modifier = Modifier) {
    Text(
        text = fontSize.toString(),
        fontSize = fontSize.sp,
        modifier = modifier
            .padding(2.dp)
            .background(Color.White, RoundedCornerShape(4.dp))
            .padding(2.dp)
    )
}

在此处输入图像描述

于 2021-01-09T16:10:00.190 回答
5

在撰写版本 1.0 上,这是一个解决方案......

Row(
    modifier = Modifier.padding(20.dp),
    verticalAlignment = Alignment.CenterVertically
) {
    Text(text = "Hello Android!",
        modifier = Modifier.padding(end = 10.dp))
    Button(text = { Text("Click") },
        onClick = { /*do something*/ },
        modifier = Modifier.padding(25.dp)
    )
}
于 2020-07-17T12:23:41.510 回答
2

你可以使用1.0.0-beta02类似的东西:

Row(
        modifier = Modifier.padding(20.dp),
        verticalAlignment = Alignment.CenterVertically
) {
    Text(text = "Hello!")
    Spacer(modifier = Modifier.width(10.dp))
    Button(onClick = { /*do something*/ },
            modifier = Modifier.padding(25.dp)) {
        Text(text = "Click")
    }
}

在此处输入图像描述

于 2020-09-01T22:20:41.597 回答
0

您可以使用Align可组合的

Align(Alignment.TopCenter) { //You can change the alignment to fit your needs.
    Row(modifier = Spacing(20.dp)) {
        Text(text = "Hello $name!")
        Spacing(10.dp)
        Padding(padding = 25.dp) {
            Button(text = "Click", onClick = { /*do something*/ })
        }
    }
}

上面的代码应该对齐整行,但是如果您希望它们相对于中心对齐,则需要单独包装每个组件row.

于 2019-12-09T13:32:38.193 回答
0

1.0.1中,您可以像这样使用verticalArrangement

Row(
    Modifier
        .fillMaxWidth()
        .height(70.dp),
    verticalArrangement = Arrangement.Center
) {
    ...
}
于 2021-08-06T09:33:11.787 回答