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