[Kotlin Android] 투명한 Status Bar를 만들고 싶다면?

이현우·2020년 10월 3일
1

Android 기능 구현

목록 보기
6/13
post-thumbnail

Status Bar?

안드로이드 기기를 보면 시계/배터리/와이파이 상태를 확인할 수 있는 상태표시줄이 있는데 이를 Status Bar이라 한다. 오늘은 앱을 실행시킬 때 이 Status Bar의 색을 투명하게 바꾸는 방법을 공유하고자 한다.

1. styles.xml

다음 두 개의 코드를 style 태그 안에 입력합니다

<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowTranslucentNavigation">true</item>

windowsTranslucentStatus 값은 Status Bar의 색을 투명하게 만드는 여부에 대한 Indicator 값이다.
마찬가지로 windowsTranslucentNaviagiton은 Navigation Bar의 색상을 투명하게 만드는 여부에 대한 Indicator 값이다.
이 플래그를 true로 적용하면 색상이 투명해지는 대신 어두운 scrim이 적용되면서 반투명해진다.

2. activity xml 부모 레이아웃

부모 레이아웃의 태그 안에 fitsSystemWindows 속성 값을 true로 준다

<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:fitsSystemWindows="true"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

이 속성은 뷰가 차지할 수 있는 영역을 상태바 및 소프트키 영역을 제외한 영역까지 확장해주는 역할을 한다.

3. activity 코틀린 코드

다음 코드를 삽입해준다

val window = window
window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
            WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS)

이 코드는 Window(액티비티 영역)를 외부 상태 표시줄까지 확장하는 것을 허락하는 Flag 값이다. 이를 삽입하면 Status Bar가 투명해지는 것과 동일한 효과를 적용받을 수 있다.

사용 후

profile
이현우의 개발 브이로그

0개의 댓글