android 如何在jetpack compose中不使用嵌套列的情况下在end中对齐视图

muk1a3rh  于 2023-04-28  发布在  Android
关注(0)|答案(1)|浏览(124)

我想显示视图Text 1Text 2位于Start位置,Text 3位于End位置。类似于此图像

我是在这个逻辑的帮助下做的

@Composable
fun XyzContent(isVisible: Boolean) {
    Column(modifier = Modifier.fillMaxWidth()) {
        Text(
            text = "Text 1",
            style = SlateTypography.body1,
        )
        Text(
            text = "Text 2",
            style = SlateTypography.body1,
        )
        AnimatedVisibility(visible = isVisible) {
            Column(
                modifier = Modifier.fillMaxWidth(),
                horizontalAlignment = Alignment.End
            ) {
                Text(
                    text = "Text 3",
                    style = SlateTypography.body1,
                )
            }
        }
    }
}

我想避免Column嵌套在AnimatedVisibility中。所以我直接在AnimatedVisibility中传递修饰符并删除Column,但现在它不能正常工作。它显示Text 3Start位置。

@Composable
fun XyzContent(isVisible: Boolean) {
    Column(modifier = Modifier.fillMaxWidth()) {
        Text(
            text = "Text 1",
            style = SlateTypography.body1,
        )
        Text(
            text = "Text 2",
            style = SlateTypography.body1,
        )
        AnimatedVisibility(
            modifier = Modifier
                .fillMaxWidth()
                .align(End),
            visible = isVisible
        ) {
            Text(
                text = "Text 3",
                style = SlateTypography.body1,
            )
        }
    }
}

看起来是这样的



那么,避免这种嵌套的Column的最佳方法是什么呢?

mwg9r5ms

mwg9r5ms1#

你可以从AnimatedVisibility的修饰符中删除.fillMaxWidth()。如果该文本获得了整个宽度,它就没有机会将自己对齐到末尾(* 实际上,你也可以通过改变文本对齐方式来实现这一点,但这是特定于文本的,在这里似乎没有必要)。
你可以试试这个:

@Composable
fun XyzContent(isVisible: Boolean) {
    Column(modifier = Modifier.fillMaxWidth()) {
        Text(
            text = "Text 1",
            style = SlateTypography.body1,
        )
        Text(
            text = "Text 2",
            style = SlateTypography.body1,
        )
        AnimatedVisibility(
            modifier = Modifier.align(End),
            visible = isVisible
        ) {
            Text(
                text = "Text 3",
                style = SlateTypography.body1,
            )
        }
    }
}

相关问题