Jetpack Compose에서 LazyColumn
이나 LazyRow
를 사용할 때, 스크롤이 리스트의 시작 또는 끝에 도달했는지를 검사하는 코드
LazyListState
의 layoutInfo.visibleItemsInfo
를 활용하여 현재 화면에 보이는 아이템 정보를 가져올 수 있음
/**
* 현재 스크롤에 첫번째가 포함되는지 검사
*/
internal fun LazyListState.isScrolledStart(): Boolean {
return layoutInfo.visibleItemsInfo.firstOrNull()?.index == 0
}
/**
* 현재 스크롤에 마지막이 포함되는지 검사
*/
internal fun LazyListState.isScrolledEnd(): Boolean {
return layoutInfo.visibleItemsInfo.lastOrNull()?.index ==
layoutInfo.totalItemsCount - 1
}
val state: LazyListState = rememberLazyListState()
Icon(
imageVector = Icons.Default.ArrowUpward,
contentDescription = null,
tint = if (state.isScrolledStart().not()) Gray10 else Color.Transparent,
)
LazyColumn(
state = state,
) {
// 리스트 아이템들
}