반응형
한 어플리케이션 내에서 화면에 따라 status bar의 색상을 다르게 처리해줘야하는 상황이 발생하였다.
다음과 같이 처리하면 status bar를 포함하는 백그라운드를 쉽게 그릴 수 있다.
1. themes.xml
기본 statusBarColor를 투명으로 설정
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme.DayFlower" parent="android:Theme.Material.Light.NoActionBar">
<item name="android:windowLightStatusBar">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:navigationBarColor">@android:color/transparent</item>
</style>
</resources>
2. status bar 영역까지 확장 하고자 하는 화면에 다음 코드 추가 (여기서는 전체 화면에 적용할 예정이므로 activity)
WindowCompat.setDecorFitsSystemWindows(window, false)
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
//추가
WindowCompat.setDecorFitsSystemWindows(window, false)
setContent {
DayFlowerTheme {
Surface(
modifier = Modifier
.fillMaxSize(),
color = White
) {
HomeScreen()
}
}
}
}
}
3. 각 화면에서 백그라운드 색상을 지정
이때 컴포넌트가 status bar 영역을 침범하지 않도록 자식 컴포넌트는 statusBarsPadding 만큼 패딩 지정
@Composable
fun HomeScreen() {
Box(
modifier = Modifier
.fillMaxSize()
.background(Colors.White) //각 화면에 백그라운드 색상 지정
) {
Column(
modifier = Modifier
.statusBarsPadding() //자식 컴포넌트는 statusBar만큼 padding 지정
.fillMaxSize()
) {
//todo
}
}
}
반응형
'Mobile Develop > Android' 카테고리의 다른 글
안드로이드 스튜디오 에뮬레이터에 apk 파일 설치하기 (1) | 2024.02.01 |
---|---|
[macOS / Android Studio] 안드로이드 스튜디오 좌클릭 먹통일 때 (1) | 2024.01.19 |
[Android Compose] TextField Clickable 적용 (0) | 2024.01.16 |
맥북 사용시 Screen Flickering (화면 깜빡임) 현상 (feat. Android Studio) (0) | 2024.01.13 |
adb 환경 변수 설정 방법 / 주요 명령어 정리 (0) | 2024.01.13 |
댓글