I saw this, but I didn't quite understand what was wrong in the end, and since I don't use requiredHeight I don't know what to fix. But it's maybe the same issue: Without the weight-modifier set the text shows up, with it it vanishes:
@Composable
fun ToiletItem(indexedToilet: IndexedValue<Toilet>, modifier: Modifier = Modifier) {
val toilet = indexedToilet.value
var expanded by remember { mutableStateOf(false) }
Card(modifier = modifier.clickable { expanded = !expanded }) {
Row(
modifier = Modifier.animateContentSize(),
verticalAlignment = Alignment.CenterVertically,
) {
Column(
modifier = Modifier
.padding(12.dp)
.weight(1f),
) {
Text(
"${indexedToilet.index + 1}.",
style = MaterialTheme.typography.displaySmall,
textAlign = TextAlign.Center,
)
Text(
stringResource(R.string.toilet),
style = MaterialTheme.typography.labelMedium,
textAlign = TextAlign.Center,
)
}
if (expanded) Text(
stringResource(toilet.textRes),
modifier = Modifier
.padding(12.dp)
.weight(3f),
style = MaterialTheme.typography.bodyMedium,
textAlign = TextAlign.Justify,
)
Image(
painterResource(toilet.imageRes),
contentDescription = null,
modifier = Modifier.fillMaxHeight(),
contentScale = ContentScale.FillHeight,
alignment = Alignment.CenterEnd,
)
}
}
}
Card(modifier = modifier.clickable { expanded = !expanded }) {
Row(
modifier = Modifier.animateContentSize(),
verticalAlignment = Alignment.CenterVertically,
) {
Column(
modifier = Modifier
.padding(12.dp)
//.weight(1f),
) {
...
The height of the card is set by it's container LazyHorizontalStaggeredGrid.
Maybe setting weight isn't the right way at all because the container wraps around the content, so it doesn't need to distribute the space? But then, how am I going to have the second, collapsible, text element beeing n times as wide as the first?