반응형
- 상태바(Status Bar)를 완전히 숨기는 방법
☘️WindowCompat.setDecorFitsSystemWindows() + WindowInsetsController
import android.os.Build
import android.view.View
import android.view.WindowInsets
import android.view.WindowInsetsController
import androidx.core.view.WindowCompat
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// 시스템 UI와 겹치게 할 수 있도록 설정 (상태바 포함)
WindowCompat.setDecorFitsSystemWindows(window, false)
// 상태바 숨기기
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
window.insetsController?.hide(WindowInsets.Type.statusBars())
} else {
@Suppress("DEPRECATION")
window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_FULLSCREEN
}
setContent {
// Compose UI 작성
}
}
WindowCompat.setDecorFitsSystemWindows(...) | 앱이 상태바나 내비게이션 바 아래로도 확장될 수 있게 함 |
window.insetsController?.hide(...) | 상태바를 숨김 |
systemUiVisibility = View.SYSTEM_UI_FLAG_FULLSCREEN | (구버전용) 동일 기능 |
❗주의사항
- 사용자가 다시 화면을 터치하거나 스크롤하면 상태바가 다시 나타날 수 있어요 (임시 숨김일 때).
- 완전한 “몰입형 모드(Immersive Mode)”로 유지
window.insetsController?.systemBarsBehavior =
WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
- 완전히 상태바와 내비게이션 바 모두 숨기고 싶을 경우
window.insetsController?.hide(
WindowInsets.Type.statusBars() or WindowInsets.Type.navigationBars()
)
- 다시 상태바를 보이게 하려면
window.insetsController?.show(WindowInsets.Type.statusBars())
반응형