try 在Compose v1.3.3中实现水平均匀分布的行中的3个项目,以及显示/隐藏其中一些项目的选项.

如果这是一个简单的if语句,在Compose中包含view,所有工作都很好(没有动画)

Row(
    modifier = modifier.fillMaxWidth(),
    verticalAlignment = Alignment.CenterVertically
) {
    Text(text = "abc", modifier = modifier.weight(1f))
    if (false) {
        Text(text = "def", modifier = modifier.weight(1f))
    }
    if(true) {
        Text(text = "zxc", modifier = modifier.weight(1f))
    }
}

Items without animation based on condition

一旦以AnimatedVisibility作为条件包装的项的UI被 destruct .

Row(
    modifier = modifier.fillMaxWidth(),
    verticalAlignment = Alignment.CenterVertically
) {
    Text(text = "abc", modifier = modifier.weight(1f))
    AnimatedVisibility(visible = false) {
        Text(text = "def", modifier = modifier.weight(1f))
    }
    AnimatedVisibility(visible = true) {
        Text(text = "zxc", modifier = modifier.weight(1f))
    }
}

enter image description here

似乎可见性+大小的同时改变可能会毁了用户界面.

有没有一种方法可以在不实现非常定制的动画的情况下实现流畅的动画?

推荐答案

这里的问题是,权重修改器应该位于行的直接子对象上.

在第二种情况下,使用AnimatedVisibility时,您应该对AnimatedVisibility使用Modify,而不再对文本使用Modify.


    Row(
        modifier = Modifier.fillMaxWidth(),
        verticalAlignment = Alignment.CenterVertically
    ) {
        Text(text = "abc", modifier = Modifier.weight(1f))
        AnimatedVisibility(visible = false, modifier = Modifier.weight(1f)) {
            Text(text = "def")
        }
        AnimatedVisibility(visible = true, modifier = Modifier.weight(1f)) {
            Text(text = "zxc")
        }
    }

Android相关问答推荐

垂直居中图标

如何检测HitTest是否命中给定的网格对象?

Android compose ,在图像中zoom 而不裁剪?

Android 14(Oneui 6)中的本地推送通知行为不一致

在Jetpack Compose中的隐藏状态栏后面绘制

如何修复Google Play市场中有关已删除广告库的错误消息?

android crashlytics 显示崩溃但不显示我的课程中的位置

如何在 kotlin 中接收带有和不带有可空对象的集合并保持引用相同

如何在C++中使用JNI_GetCreatedJavaVMs调用Java代码

Android 构建失败:找不到 flexbox2.0.1.aar

Kotlin 协程、 retrofit 、android

Android Studio电鳗:javaHome好像无效

compose 导航参数字符串包含花括号?

如何使用 Jetpack Compose 制作两个圆圈

如何在 Jetpack Compose 中的 VisualTransformation 之后将光标保持在文本字段的末尾

java.lang.String 类型的值 Forbidden 无法转换为 JSONObject

状态值更改时屏幕未重新组合 - Jetpack Compose

有什么方法可以确定正在使用哪个 Android 手机的麦克风进行录音?

如何在 MAUI 项目中包含每个平台的现有 C++ 库?

如何使在库范围之外无法访问的接口的具体实现.?