我可以通过按下按钮并更新相关状态来更改1个按钮的背景颜色,如下所示:
@Composable
fun makeButtons() {
var isPressed by remember { mutableStateOf(false) }
val color = if (isPressed) Color.Red else Color.Green
Column {
Button(
onClick = { isPressed = !isPressed },
colors = ButtonDefaults.buttonColors(backgroundColor = color)
) {
Text("Btn")
}
}
}
但是,当所有按钮都是动态创建的(即在for循环中)时,我如何定位单个按钮(即通过它的ID或Text值)呢?
@Composable
fun makeButtons() {
var isPressed by remember { mutableStateOf(false) }
val color = if (isPressed) Color.Red else Color.Green
Column {
for (i in 1..5) {
Button(
onClick = { isPressed = !isPressed },
colors = ButtonDefaults.buttonColors(backgroundColor = color)
) {
Text("Btn $i")
}
}
}
}
我希望能够改变每个按钮的背景颜色,分别。目前,如果你运行上述代码,所有将改变颜色一起,如果你按下任何。
第一节第一节第一节第一节第一次
1条答案
按热度按时间irlmq6kh1#
你可以用
mutableStateListOf
来代替mutableStateOf
,或者你可以简单地在for循环中定义isPressed
: