//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을 원하는 비율로 배치하기

스크린샷 2023-12-22 오후 1.45.29.png

//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)
    }
 }

카테고리 추가하기

스크린샷 2023-12-22 오후 1.45.44.png

LazyVerticalGrid(
	...
) {
		item(span = {
				GridItemSpan(maxLineSpan)
		}) {
				CategoryCard("Fruits")
		}

스크린샷 2023-12-22 오후 1.49.25.png

스크린샷 2023-12-22 오후 1.48.38.png

LazyVerticalGrid(
	...
) {
		item(span = { GridItemSpan(maxLineSpan) }) {		CategoryCard("Fruits")	}
		items(
				fruitPlants.size,
				span = { GridItemSpan(if (it.isOdd) 2 else 1 }
		) { plant -> PlantCard(fruitPlants[it]) }
}