android - 如何在 Jetpack Compose 中为按钮的宽度设置动画
问题描述
假设我有一个这样的可组合:
@Composable
fun LoadingButton() {
val (isLoading, setIsLoading) = state { false }
Button(
onClick = setIsLoading,
text = {
if (isLoading) {
Text(text = "Short text")
} else {
Text(text = "Very very very long text")
}
}
)
}
如何为按钮的宽度更新设置动画?
我很清楚我可以为按钮添加一个 preferredWidth 修饰符,并使用以下方式为这个宽度设置动画:
val buttonWidth = animate(target = if (isLoading) LoadingButtonMinWidth else LoadingButtonMaxWidth)
但这不是我想要的。我需要为自动“包装内容”宽度设置动画。
提前致谢。
解决方案
您需要向Composable添加一个animateContentSize
修饰符:Text
@Composable
fun LoadingButton() {
val (isLoading, setIsLoading) = state { false }
Button(onClick = { setIsLoading(!isLoading) }) {
Text(
text = if (isLoading) {
"Short text"
} else {
"Very very very long text"
},
modifier = Modifier.animateContentSize()
)
}
}
推荐阅读
- python - 使用 SimPy 进行业务流程模拟 (BPS)。示例代码
- php - 这是获取 Laravel 中可预订房间列表的功能。谁能帮我弄清楚查询有什么问题?
- cron - 每个星期四的 Crontab
- mysql - 在不声明变量的情况下将光标获取到用户定义的变量中
- kubernetes - Knative 支持 arm64 吗?
- pandas - 无法使用 QPython 从 KDB 检索符号
- ios - iOS Set-Cookie 在几种情况下未存储并发送回服务器
- flutter - 仅当我更改时才颤动自动验证模式
- eclipse - cppcheclipse 好像消失了
- python - 关于 Python 文本替换