WindowInsets
1. WindowInsets?
시스템 UI 영역에 대한 정보를 담고 있는 객체이다.
시스템 UI 라고 하는 것은, Status Bar, Navigation Bar, IME(Keyboard), 노치나 엣지 영역을 의미한다.
1-1. WindowInsets으로 뭘 할 수 있을까?
시스템 UI 영역이 있다면, 우리가 만든 앱 UI 영역도 있다. 이 두 UI가 서로 조화롭게 배치되어야 사용자는 모바일의 기능들을 편리하게 사용할 수 있다. 우리는 WindowInsets의 정보를 이용하여 우리의 앱 UI를 적절하게 디스플레이하고, 반대로 우리 앱 UI/UX를 위해 시스템 UI 영역을 조정할 수 있다.
2. Compose에서 WindowInsets 사용하기
2-1. 시스템바(Status Bar, Navigation Bar)만큼 패딩 적용하기
@Composable
fun StatusBarPaddingBox() {
val insets = WindowInsets.systemBars
Box(
modifier = Modifier
.padding(
top = with(LocalDensity.current) { insets.top.toDp() },
bottom = with(LocalDensity.current) { insets.bottom.toDp() }
)
.background(Color.Gray)
) {
}
}
2-2. 키보드(IME)만큼 패딩 적용하기
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
WindowCompat.setDecorFitsSystemWindows(window, false)
setContent {}
}
}
3. 참고 포스트
- 여러 WindowInsets관련 패딩 소개: WindowInsets을 Compose에서 다루는 방법, Falco