gpt4 book ai didi

android - 如何测量可组合物?

转载 作者:行者123 更新时间:2023-12-04 23:52:32 25 4
gpt4 key购买 nike

我有一个可组合的按钮,它可以显示文本或加载器,具体取决于状态

enum class State { NORMAL, LOADING }

@Composable
fun MyButton(onClick: () -> Unit, text: String, state: State) {
Button(onClick, Modifier.height(60.dp)) {
if (state == State.NORMAL) {
Text(text, fontSize = 32.sp)
} else {
CircularProgressIndicator(color = Color.Yellow)
}
}
}
我像这样使用它:
MyButton(
onClick = {
state = if (state == State.NORMAL) State.LOADING else State.NORMAL
},
"hello",
state
)
但是转到 loading 时按钮会缩小状态。如何在 normal 中测量它状态,在 loading 中分配这个测量的宽度稍后状态?

最佳答案

假设正常状态出现在加载状态之前,您可以使用 onGloballyPositioned修饰符以获取 Text 的大小并将其应用于 CircularProgressIndicator .
就像是:

@Composable
fun MyButton(onClick: () -> Unit, text: String, state: State) {
var sizeText by remember { mutableStateOf(IntSize.Zero) }

Button(onClick, Modifier.height(60.dp)) {
if (state == State.NORMAL) {
Text(text, fontSize = 32.sp,
modifier = Modifier.onGloballyPositioned {
sizeText = it.size
})
} else {
Box(Modifier.size(with(LocalDensity.current){ (sizeText.width).toDp()},with(LocalDensity.current){ (sizeText.height).toDp()}),
contentAlignment = Alignment.Center
) {
CircularProgressIndicator(color = Color.Yellow)
}
}
}
}
enter image description here

关于android - 如何测量可组合物?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68227242/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com