A lazy horizontal grid layout.
LazyHorizontalGridSample
@Composable
fun LazyHorizontalGridSample() {
val itemsList = (0..5).toList()
val itemsIndexedList = listOf("A", "B", "C")
val itemModifier = Modifier.border(1.dp, Color.Blue).width(80.dp).wrapContentSize()
LazyHorizontalGrid(
rows = GridCells.Fixed(3),
horizontalArrangement = Arrangement.spacedBy(16.dp),
verticalArrangement = Arrangement.spacedBy(16.dp),
) {
items(itemsList) { Text("Item is $it", itemModifier) }
item { Text("Single item", itemModifier) }
itemsIndexed(itemsIndexedList) { index, item ->
Text("Item at index $index is $item", itemModifier)
}
}
}
LazyHorizontalGridSpanSample
@Composable
fun LazyHorizontalGridSpanSample() {
val sections = (0 until 25).toList().chunked(5)
LazyHorizontalGrid(
rows = GridCells.Fixed(3),
horizontalArrangement = Arrangement.spacedBy(16.dp),
verticalArrangement = Arrangement.spacedBy(16.dp),
) {
sections.forEachIndexed { index, items ->
item(span = { GridItemSpan(maxLineSpan) }) {
Text(
"This is section $index",
Modifier.border(1.dp, Color.Gray).width(80.dp).wrapContentSize(),
)
}
items(
items,
// not required as it is the default
span = { GridItemSpan(1) },
) {
Text("Item $it", Modifier.border(1.dp, Color.Blue).width(80.dp).wrapContentSize())
}
}
}
}