This modifier animates its own size when its child modifier (or the child composable if it is already at the tail of the chain) changes size.
AnimateContent
@Composable
fun AnimateContent() {
val shortText = "Hi"
val longText = "Very long text\nthat spans across\nmultiple lines"
var short by remember { mutableStateOf(true) }
Box(
modifier =
Modifier.background(Color.Blue, RoundedCornerShape(15.dp))
.clickable { short = !short }
.padding(20.dp)
.wrapContentSize()
.animateContentSize()
) {
Text(
if (short) {
shortText
} else {
longText
},
style = LocalTextStyle.current.copy(color = Color.White),
)
}
}