首页 > 解决方案 > 如何在 Jetpack Compose 中使小部件不可见?

问题描述

我试图ProgressIndicator在列中显示和隐藏。问题是当我想隐藏时ProgressIndicator,其他小部件之间的空间也将被删除(如View.GONE)但我想保持小部件大小(如View.INVISIBLE

例子:

@Composable
fun Main(isLoading: Boolean) {
    Column {
        Text(text = "Text")

        if (isLoading) {
            CircularProgressIndicator()
        }

        Button(onClick = { /*clicked*/ }, content = { Text(text = "Button") })    
    }
}

我找到了一个解决方案,但我不确定它是否是正确的方法。

if (isLoading) {
    CircularProgressIndicator()
} else {
    Spacer(modifier = Modifier.height(40.dp))
}

有没有其他方法可以使小部件不可见View.INVISIBLE

如何获取小部件大小以设置Spacer大小?

谢谢

标签: androidkotlinandroid-jetpack-compose

解决方案


使用 Alpha Zero,@commonsware 的评论中提到了这一点,因为您不需要知道空间大小的大小,这与 Spacer() 组合不同,它需要特定的大小,在某些情况下这可能很难知道。

val commentsAlpha = if (condition) 1f else 0f
modifier = Modifier
            .alpha(commentsAlpha)

推荐阅读