Compose에서 LazyColumn / LazyRow의 끝 검사

PanaxW·3일 전
0

Android

목록 보기
19/21

Jetpack Compose에서 LazyColumn이나 LazyRow를 사용할 때, 스크롤이 리스트의 시작 또는 끝에 도달했는지를 검사하는 코드

🔍 코드


LazyListStatelayoutInfo.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,
) {
    // 리스트 아이템들
}
profile
Android Developer

0개의 댓글