在XML中,我们使用View.INVISIBLE表示根本不显示视图,但出于布局目的,它仍然占用空间.喷气背包组合的替代方案是什么?

AnimatedVisibility(
    // true or false
) {
    Button() // button code.
}

推荐答案

您可以构建自定义修改器来测量Composable占用的空间.

类似于:

fun Modifier.visible(visible: Boolean) = if (visible) this else this.then(Invisible)

private object Invisible : LayoutModifier {

    override fun MeasureScope.measure(
        measurable: Measurable,
        constraints: Constraints
    ): MeasureResult {
        val placeable = measurable.measure(constraints)
        return layout(placeable.width, placeable.height) {}
    }
}

Android相关问答推荐

在Android中点击滑动时触发的手势

以编程方式更改Android应用程序上的文件许可

在Kotlin Jetpack Compose中点击按钮后启动另一个Android应用程序

泛型类型lambda函数参数作为函数参数

推断的类型是片段,但应为上下文

Jetpack创作动画断断续续变化的观点

为什么我有多个Player实例?

Android写/读二进制文件到共享存储

为什么Kotlin允许将非空值类型化为可空类型,但又将其视为非空值?

如何在Jetpack Compose中向SearchBar添加边框

Android 12+BLE字节不同

有没有办法让协程通道在接收时遵循特定的顺序而不是先进先出

@Immutable 对数据类有什么好处?

我的自定义小吃店不适合我的全宽屏幕尺寸

在模块 jetified-kotlin-stdlib-1.8.10 中发现重复的类 kotlin.random.jdk8,带有启动基准

如何关闭可组合对话框?

从 Firebase 云存储中获取照片会导致 Android Jetpack Compose 闪烁

处理程序 postDelayed 方法不起作用,kotlin 应用程序卡在启动画面上

在jetpack compose中看不到圆角

如何使伴奏导航 BottomSheet 完全展开?