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相关问答推荐

如何正确增加LazyStream中的变量

Jetpack Compose-如何使用值动画直接控制其他动画

MAP函数返回单位列表而不是字符列表

DocumentFile.canWrite()、DocumentFile.Existes()-使用本地内置手机存储(而不是云)时性能较差(占用太多CPU时间)

Android从已连接的设备获得GATT

在Jetpack Compose中实现焦点突出的最佳方式?

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

Dispatchers中的Kotlin协同程序.Main没有';t块主螺纹

如何正确创建可拖动的浮动视图?

Android 导航 - 定义参数

在 Android 房间迁移中获取上下文

如何使用滑行加载媒体的专辑封面?

如何在 Jetpack Compose 中对数据类进行 Parcelize

在段的中心绘制饼图(甜甜圈图)的图例

在 Jetpack Compose 中包装内容

每次在 Jetpack Compose 中调用导航

如何关闭可组合对话框?

对话框中的内容不可见

如何在包含 Jetpack Compose 内容的布局中使用权重

在 Android Studio 中保存数据