Tobias Gronbach
03/02/2022, 11:09 AMval itemsState = viewModel.items.collectAsState()
val items = itemsState.value
val cardsWidth = remember { mutableListOf<Dp>() }
val listState = rememberLazyListState()
val density = LocalDensity.current
LazyColumn
LazyColumn(
state = listState,
) {
itemsIndexed(items, key = { index, _ -> index }) { index, trainingItem ->
cardsWidth.addIfIndexIsNotTaken(index, 0.dp)
val firstVisibleItemIndex = listState.firstVisibleItemIndex
val modifier = if ((cardsWidth[index] > 0.dp) && (index > firstVisibleItemIndex)) {
val newCardWidth = cardsWidth[index] - ((index - firstVisibleItemIndex) * 10).dp
println("New Card Width: $newCardWidth")
Modifier.width(newCardWidth)
} else
Modifier
Card(
modifier = Modifier.onGloballyPositioned {
if cardsWidth[index] == 0.dp)
cardsWidth[index] = with(density) { it.size.width.toDp() }
}
.then(modifier)
) {
// Content ....
}
}
}