Jetpack Compose 中的 View.GONE 替代品?

Ale*_*nko 4 android android-jetpack android-jetpack-compose

我将举一个问题的例子,假设我在框中有两个按钮

@Preview
@Composable
fun testView() {
    Box(modifier = Modifier
        .size(200.dp)
    ) {
        Button(onClick = {
            Log.e("HERE", "First btn")
        }) {
            Text(text = "Btn1")
        }

        Button(modifier = Modifier
            onClick = {
            Log.e("HERE", "Second btn")
        }) {
            Text(text = "Btn2")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我运行应用程序时,我会看到Btn2(实际上位于顶部Btn1),当我单击日志时,我会看到Second btn预期的结果。

假设我需要隐藏Btn2以便用户可以单击Btn1,为了以旧的方式执行此操作,我会添加View.GONE并且它会起作用,但是在 JetpackCompose 中(据我所知)只有一个alpha选项,所以我尝试将其设置为0f像这样

...
Button(modifier = Modifier
            .alpha(0f),
            onClick = {
            Log.e("HERE", "Second btn")
        }) {
            Text(text = "Btn2")
        }
...
Run Code Online (Sandbox Code Playgroud)

当我运行应用程序时,我Btn1在屏幕上看到(如预期),但是,当我单击时,我在日志中看到Second btn

因此,很明显,alpha可见性正在改变,但视图本身仍然存在。

问题是有没有View.GONE像以前那样的替代方案?

Gab*_*han 6

如果您希望第二个按钮消失,则方法是不输出第二个按钮。

if( some_condition) {
    Button(modifier = Modifier
        onClick = {
        Log.e("HERE", "Second btn")
    }) {
        Text(text = "Btn2")
    }
}
Run Code Online (Sandbox Code Playgroud)

如果 some_condition 为 false,则不会输出 Button,也不会出现。