사용 편의를 위해 대부분의 내장 Material 3 컴포저블(androidx.compose.material3
)은 Material 사양에 따라 앱에 컴포저블이 배치되는 방식에 따라 인셋을 직접 처리합니다.
인셋 처리 컴포저블
다음은 인셋을 자동으로 처리하는 Material 구성요소 목록입니다.
앱 바
TopAppBar
/SmallTopAppBar
/CenterAlignedTopAppBar
/MediumTopAppBar
/LargeTopAppBar
: 시스템 바의 상단 및 가로 측면을 패딩으로 적용합니다. 창 상단에 사용되기 때문입니다.BottomAppBar
: 시스템 표시줄의 하단 및 가로 측면을 패딩으로 적용합니다.
콘텐츠 컨테이너
ModalDrawerSheet
/DismissibleDrawerSheet
/PermanentDrawerSheet
(모달 탐색 창 내 콘텐츠): 콘텐츠에 세로 및 시작 인셋을 적용합니다.ModalBottomSheet
: bottom 인셋을 적용합니다.NavigationBar
: bottom 및 horizontal 인셋을 적용합니다.NavigationRail
: 세로 및 시작 인셋을 적용합니다.
Scaffold
기본적으로 Scaffold
는 사용자가 사용하고 소비할 수 있도록 인셋을 매개변수 paddingValues
로 제공합니다.
Scaffold
는 콘텐츠에 인셋을 적용하지 않습니다. 이 책임은 개발자에게 있습니다.
예를 들어 Scaffold
내부의 LazyColumn
로 이러한 인셋을 사용하려면 다음을 실행합니다.
Scaffold { innerPadding -> // innerPadding contains inset information for you to use and apply LazyColumn( // consume insets as scaffold doesn't do it by default modifier = Modifier.consumeWindowInsets(innerPadding), contentPadding = innerPadding ) { // .. } }
다음 동영상은 Scaffold
내의 LazyColumn
를 보여주며, 여기에는 전면 유리 디스플레이가 사용 중지된 상태와 사용 설정된 상태가 나와 있습니다.
기본 인셋 재정의
컴포저블에 전달된 windowInsets
매개변수를 변경하여 컴포저블의 동작을 구성할 수 있습니다. 이 매개변수는 대신 적용할 다른 유형의 창 인셋이거나 빈 인스턴스(WindowInsets(0, 0, 0, 0)
)를 전달하여 사용 중지할 수 있습니다.
예를 들어 LargeTopAppBar
에서 인셋 처리를 사용 중지하려면 windowInsets
매개변수를 빈 인스턴스로 설정합니다.
LargeTopAppBar( windowInsets = WindowInsets(0, 0, 0, 0), title = { Text("Hi") } )