【发布时间】:2020-09-27 21:03:13
【问题描述】:
我有一个 Stack 小部件,其中包含一个 Box 和一个 Image。 随着状态的变化,我想按状态具有的任何值缩放 Box 小部件,例如 2 倍。
我找不到任何关于在 Modifier 或 Box 属性上缩放小部件的信息,所以我决定通过使用“Modifier.size”来操纵大小来对状态变化做出反应,这对我来说并不理想。
那么是否支持缩放小部件或者我应该手动使用 size 属性?
-谢谢
@Composable
fun Pointer(modifier: Modifier = Modifier, state: TransitionState, onClick: () -> Unit) {
Stack(modifier) {
Box(
shape = CircleShape, backgroundColor = Color.Gray.copy(alpha = .3f),
modifier = Modifier.size(state[width])
)
Image(
asset = imageResource(id = R.drawable.ic_pointer),
modifier = Modifier
.clickable(onClick = onClick)
)
}
}
【问题讨论】:
-
您能否进一步解释一下您所说的大小和规模之间的区别是什么意思?特别是对于
Box(),比例尺会做什么而尺寸不会? IOW,“不适合我”是什么意思? -
好的,我不想关心盒子的大小或明确保留对它的引用。我只想传递例如 2,然后将框的宽度/高度乘以 2,或者传递 0.4 并从它具有的任何值中获取宽度/高度乘以 0.4。
-
我的意思与我们在 Android 视图系统中用于动画视图的 view.scale() 完全相同
-
A
Box()没有有大小,除了你告诉它要绘制的大小。没有“获取盒子的宽度/高度”,除了你告诉它绘制的内容。您正在考虑有状态的视图,但这不是 Compose 的工作方式。所以,Modifier.size()似乎是正确的答案。 “我不想关心盒子的大小或明确保留对它的引用”——在这件事上你别无选择。 -
@CommonsWare 你应该把它写成答案,它应该是被接受的。
标签: android android-jetpack android-jetpack-compose