Home 안드로이드 상태 바(스테이터스 바) 투명화
Post
Cancel

안드로이드 상태 바(스테이터스 바) 투명화

안드로이드 상태 바 투명화

안드로이드 개발을 하다보면 상태 바(스테이터스 바)를 투명화 시키고 싶은 적이 있을 것이다 해당 방법을 구현하는 법은 매우 간단한데 그 방법은 다음과 같다

신버전

최근에 더욱 간편한 새로운 방법을 알게 되어서 해당 방법을 소개하겠다

enableEdgeToEdge 함수를 사용하면 된다

1
2
3
4
5
6
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    enableEdgeToEdge() // 이 부분
    binding = ActivityMainBinding.inflate(layoutInflater)
    setContentView(binding.root)
}

위와 같이 그저 함수 하나만으로도 투명화 시킬 수 있게 바꼈다 만약 버튼과 같은 뷰들이 스테이터스바와 겹치는게 맘에 들지 않는다면

1
2
3
4
5
6
7
8
9
10
11
12
private fun setupWindowInsets(view: View) {
    ViewCompat.setOnApplyWindowInsetsListener(binding.root) { _, insets ->
        val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
        val statusBars = insets.getInsets(WindowInsetsCompat.Type.statusBars())

        val statusBarHeight = statusBars.top
        val navBarHeight = systemBars.bottom

        view.setPadding(0, statusBarHeight, 0, navBarHeight)
        insets
    }
}

해당 함수를 통해 해결할 수 있다

구버전

1
2
3
4
5
6
window.apply {
            decorView.systemUiVisibility =
                View.SYSTEM_UI_FLAG_LAYOUT_STABLE or
                        View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
            statusBarColor = Color.TRANSPARENT
        }

투명화 시키고 싶은 액티비티에 해당 코드를 붙여넣기만 하면 원하던 대로 간단하게 상태 바를 투명화 시킬 수 있다

눈속임 방법

물론 위에서 설명한 투명하게 만드는 방법도 좋지만 사용하다 보면 상용 중인 앱들과 달리 그리 이쁘지도 않고 뭔가 이상함을 느낄 것이다

그럴 때 쓰기 좋은 방법이 다음으로 소개할 방법으로

1
2
<item name="android:windowLightStatusBar">true</item>
<item name="android:statusBarColor">@color/white</item>

안드로이드 테마에서 해당 코드를 사용하면 눈속임으로 깔끔하게 상태 바가 잘 안보이게 된다 해당 코드를 자세히 설명하자면

1
<item name="android:windowLightStatusBar">true</item>

이 부분은 앱 배경색이 밝으면 true, 어두우면 false로 설정하면 되고

1
<item name="android:statusBarColor">@color/white</item>

다음으로 이 부분을 배경색과 동일하게 맞추면 거슬리지 않게 상태 바를 표시할 수 있다

This post is licensed under CC BY 4.0 by the author.