본문 바로가기
카테고리 없음

Jetpack Compose 오버 스크롤 효과 제거 방법 (LazyColumn & Column)

by h4r3 2025. 2. 7.
반응형

 

Jetpack Compose에서 LazyColumn, Column 등 스크롤 가능한 컴포넌트는 기본적으로 오버 스크롤(Edge Glow) 효과가 적용됩니다. 이러한 오버 스크롤 효과는 앱의 디자인 요구에 따라 불필요할 수 있습니다. 이 글에서는 오버 스크롤 효과를 제거하는 방법에 대해 자세히 알아보겠습니다.

 


1. LazyColumn 오버 스크롤 제거

Jetpack Compose의 LazyColumn에서 오버 스크롤 효과를 제거하려면 LocalOverscrollConfiguration을 활용해야 합니다.

🔹 코드 예제

import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalOverscrollConfiguration
import androidx.compose.runtime.CompositionLocalProvider

@Composable
fun NoOverscrollLazyColumn() {
    // 오버 스크롤 효과 제거
    CompositionLocalProvider(LocalOverscrollConfiguration provides null) {
        LazyColumn(modifier = Modifier.fillMaxSize()) {
            items(50) { index ->
                Text(text = "Item $index")
            }
        }
    }
}

🔍 설명

  • CompositionLocalProvider(LocalOverscrollConfiguration provides null) 코드를 사용하여 오버 스크롤 효과를 비활성화합니다.
  • 이 방법은 LazyColumn, LazyRow, LazyVerticalGrid 등에 모두 동일하게 적용할 수 있습니다.

 

2. Column 오버 스크롤 제거

Column은 기본적으로 스크롤 기능이 없습니다. 따라서 Modifier.verticalScroll()을 사용해 스크롤을 추가한 후 오버 스크롤 효과를 제거해야 합니다.

🔹 코드 예제

import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalOverscrollConfiguration
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.foundation.rememberScrollState

@Composable
fun NoOverscrollColumn() {
    CompositionLocalProvider(LocalOverscrollConfiguration provides null) {
        Column(
            modifier = Modifier
                .fillMaxSize()
                .verticalScroll(rememberScrollState())
        ) {
            repeat(50) { index ->
                Text(text = "Column Item $index")
            }
        }
    }
}

 

🔍 설명

  • Column은 기본적으로 스크롤이 비활성화되어 있으므로 Modifier.verticalScroll()과 rememberScrollState()를 조합하여 스크롤 기능을 추가합니다.
  • LocalOverscrollConfiguration provides null로 설정하여 오버 스크롤 효과를 제거합니다.
  •  

 

3. 오버 스크롤 제거가 필요한 경우

  • 앱의 UI 디자인이 미니멀하거나 특정 애니메이션이 요구될 때
  • 사용자 경험(UX)에서 오버 스크롤 효과가 어색하거나 불필요할 때
  • 특정 레이아웃에서 스크롤 효과를 제한해야 할 때

 


 

4. 요약

컴포넌트 스크롤 방법 오버 스크롤 제거 방법

LazyColumn 기본 스크롤 지원 LocalOverscrollConfiguration provides null
Column verticalScroll() 필요 LocalOverscrollConfiguration provides null

 


결론

Jetpack Compose에서는 오버 스크롤 효과를 간단히 비활성화할 수 있습니다. 특히 LazyColumn, Column 등 다양한 스크롤 컴포넌트에서 동일한 방식으로 적용할 수 있으므로 디자인 요구에 맞춰 활용해 보세요.

반응형

 

반응형