为 'Column' 内的可组合项提供不同的对齐方式

Provide different alignments to composables within 'Column'

我在一个列中有一个 'Text' 和另一个可组合项。我想将文本放在顶部,将可组合项定义的布局放在底部。我无法找到一种方法来为 Column 中的 'elements' 提供不同的对齐方式,因为 Column 的 'Modifier' 中指定的 alignment/arrangement 适用于其中的所有 'elements' .我当前的代码都与底部对齐。这是我的代码:

@Composable
fun SignUpDetails(navController: NavController) {
    Column(
        modifier = Modifier.fillMaxSize(),
        verticalArrangement = Arrangement.Bottom,
        horizontalAlignment = Alignment.CenterHorizontally
    ) {
        Text(
            text = "First Screen\n" +
                    "Click me to go to Second Screen",
            color = Color.Green,
            style = TextStyle(textAlign = TextAlign.Center),
            modifier = Modifier
                .padding(24.dp)
                .clickable(onClick = {
                    // this will navigate to second screen
                    navController.navigate("second_screen")
                })
        )
        ProgressBar1UI()
    }
} 

如何实现我的要求?

您可以使用 verticalArrangement = Arrangement.SpaceBetween:

Place children such that they are spaced evenly across the main axis, without free space before the first child or after the last child

类似于:

Column(
    modifier = Modifier.fillMaxSize(),
    horizontalAlignment = Alignment.CenterHorizontally,
    verticalArrangement = Arrangement.SpaceBetween
) {

        Text( /*...*/ )
        ProgressBar1UI()
}

否则你可以使用不同的东西,比如 BoxModifier.align:

Box(modifier = Modifier.fillMaxSize()) {
    Text(
         modifier = Modifier
            .align(Alignment.TopCenter)
    )

    ProgressBar1UI(Modifier.align(Alignment.BottomCenter))

}

实现这种行为的另一种方法(一个视图在顶部,第二个视图在底部)是在项目之间添加带有权重修饰符的 Spacer 组件。

@Composable
fun Example() {
    Column {
        Text("FirstText")

        Spacer(modifier = Modifier.weight(1f))

        Text("SecondText")
    }
}