본문 바로가기

카테고리 없음

enableEdgeToEdge()

안드로이드 프로젝트 생성시 기본적으로 나오는 코드 입니다 그런데 한번도 사용 해본적도 없고 알려고 한적도 없더라고요 갑자기 궁금해져서 알아 보았습니다.

enableEdgeToEdge()
setContentView(R.layout.activity_main)
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
    val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
    v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
    insets

 

 

위 함수의 description EdgeToEdge 라는 코틀린파일에 추가된ComponentActivity의 확장함수로 SystemBarStyle의 자료형을 가지는 statusBarStyle과 navigationBarStyle을 받습니다.

fun ComponentActivity.enableEdgeToEdge(
    statusBarStyle: SystemBarStyle = SystemBarStyle.auto(Color.TRANSPARENT, Color.TRANSPARENT),
    navigationBarStyle: SystemBarStyle = SystemBarStyle.auto(DefaultLightScrim, DefaultDarkScrim)
) {
    val view = window.decorView
    val statusBarIsDark = statusBarStyle.detectDarkMode(view.resources)
    val navigationBarIsDark = navigationBarStyle.detectDarkMode(view.resources)
    val impl = Impl ?: if (Build.VERSION.SDK_INT >= 29) {
        EdgeToEdgeApi29()
    } else if (Build.VERSION.SDK_INT >= 26) {
        EdgeToEdgeApi26()
    } else if (Build.VERSION.SDK_INT >= 23) {
        EdgeToEdgeApi23()
    } else if (Build.VERSION.SDK_INT >= 21) {
        EdgeToEdgeApi21()
    } else {
        EdgeToEdgeBase()
    }.also { Impl = it }
    impl.setUp(
        statusBarStyle, navigationBarStyle, window, view, statusBarIsDark, navigationBarIsDark
    )
}

 

 

상태 표시줄의 스타일 값과 네비게이션 스타일 과련 내용입니다 

statusVarStyle : 상태 표시줄의 SystemBarStyle입니다.

NavigationBarStyle : NavigationBar에 대한 SystemBarStyle 입니다

enableEdgeToEdge()을 사용하면 해당 바들을 투명하게 만들거나 색상을 변경할 수 있습니다.

 

728x90