//LazyVerticalGrid, LazyHorizontalGrid
LazyVerticalGrid(
**columns = GridCells.Fixed(2),
verticalArrangment = Arrangment.spaceBy(16.dp),
horizontalArrangment = Arrangment.spaceBy(16.dp),
contentPadding = PaddingValues(...),
state = state
) {**
items(data) { item ->
Item(item)
}
}
* **LazyVerticalGrid**
LazyVerticalGrid - state //**LazyGridState**
state.firstVisibleItemIndex //Int
state.layoutInfo //**LazyGridLayoutInfo**
* **LazyColumn**
LazyColumn - state //**LazyListState**
state.firstVisibleItemIndex //Int
state.layoutInfo //**LazyListLayoutInfo**
Item을 원하는 비율로 배치하기
//item 한줄에 2개
columns = GridCells.Fixed(2)
//itme 한줄에 128dp씩
columns = GridCells.Adaptive(128.dp)
//custom으로 정의
columns = object: GridCells {
override fun Density.calculateCrossAxisCellSizes(
availableSize: Int,
spacing: Int
): List<Int> {
val firstColumn = (availableSize - spacing) * 2 / 3
val secondColumn = availableSize - spacing - firstColumn
return listOf(firstColumn, secondColumn)
}
}
카테고리 추가하기
LazyVerticalGrid(
...
) {
item(span = {
GridItemSpan(maxLineSpan)
}) {
CategoryCard("Fruits")
}
LazyVerticalGrid(
...
) {
item(span = { GridItemSpan(maxLineSpan) }) { CategoryCard("Fruits") }
items(
fruitPlants.size,
span = { GridItemSpan(if (it.isOdd) 2 else 1 }
) { plant -> PlantCard(fruitPlants[it]) }
}