[英]Change icon dynamically in Jetpack Compose
I have two icons for "Like" button - ic_thumb_up
and ic_thumb_up_selected
我有两个“喜欢”按钮的图标 - ic_thumb_up
和ic_thumb_up_selected
The type of icon should depend on the offer.likedByUser
parameter.图标的类型应取决于offer.likedByUser
参数。
var thumbIcon by remember {
mutableStateOf(if (offer.likedByUser) R.drawable.ic_thumb_up_selected else R.drawable.ic_thumb_up)
}
IconButton(
onClick = {
offer.likedByUser = !offer.likedByUser
}
) {
Image(painter = painterResource(id = thumbIcon) )
}
Why is it not working?为什么它不起作用?
This code这段代码
var thumbIcon by remember {
mutableStateOf(if (offer.likedByUser) R.drawable.ic_thumb_up_selected else R.drawable.ic_thumb_up)
}
runs only once, and sets the value to either thumbs_up_selected
or thumbs_up
.只运行一次,并将值设置为thumbs_up_selected
或thumbs_up
。 You are not changing the mutableStateOf
in your onClick
handler, so nothing happens.您没有更改onClick
处理程序中的mutableStateOf
,因此什么也没有发生。
You need to change it like this你需要像这样改变它
var thumbIconLiked by remember {
mutableStateOf(offer.likedByUser)
}
IconButton(
onClick = {
thumbIconLiked = !thumbIconLiked
}
) {
Image(
painter = painterResource(
id = if (thumbIconLIked) {
R.drawable.ic_thumb_up_selected
} else {
R.drawable.ic_thumb_up
}
)
)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.