Kotlin Compose,对齐行中的项目

Ali*_*aXX 4 android kotlin android-jetpack-compose

我正在使用新品牌 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*/ })

        }
    }
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

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

Gab*_*tti 19

您可以使用verticalAlignment中的参数Row
就像是:

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")
    }
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

您还可以使用中每个可组合项align中定义的修饰符。 请注意:RowScopeRow

在 中垂直对齐元素Row。该对齐方式将优先RowsverticalAlignment参数。

Row(
    verticalAlignment = Alignment.CenterVertically
) {
    // The child with no align modifier is positioned by default so that is in the middle of
    // the vertical axis.
    Box(Modifier.size(80.dp, 40.dp).background(Teal200))

    // Gravity.Top, the child will be positioned so that its top edge is aligned to the top
    // of the vertical axis.
    Box(Modifier.size(80.dp, 40.dp).align(Alignment.Top).background(Color.Red))

    // Gravity.Center, the child will be positioned so that its center is in the middle of
    // the vertical axis.
    Box(Modifier.size(80.dp, 40.dp).align(Alignment.CenterVertically).background(Color.Yellow))

    // Gravity.Bottom, the child will be positioned so that its bottom edge is aligned to the
    // bottom of the vertical axis.
    Box(Modifier.size(80.dp, 40.dp).align(Alignment.Bottom).background(Color.Green))

}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


ngl*_*ber 9

在 compose 版本 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)
    )
}
Run Code Online (Sandbox Code Playgroud)


Val*_*kov 5

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)
    )
}
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明