사용 편의성을 위해 많은 내장 Material 3 컴포저블(androidx.compose.material3
)은 Material 사양에 따라 앱에 컴포저블이 배치되는 방식을 기반으로 인셋을 자체적으로 처리합니다.
인셋 처리 컴포저블
다음은 인셋을 자동으로 처리하는 Material 구성요소 목록입니다.
앱 바
TopAppBar
/SmallTopAppBar
/CenterAlignedTopAppBar
/MediumTopAppBar
/LargeTopAppBar
: 창 상단에 사용되므로 시스템 표시줄의 상단 및 가로 측면을 패딩으로 적용합니다.BottomAppBar
: 시스템 표시줄의 하단 및 가로 측면을 패딩으로 적용합니다.
콘텐츠 컨테이너
ModalDrawerSheet
/DismissibleDrawerSheet
/PermanentDrawerSheet
(모달 탐색 창 내부의 콘텐츠): 콘텐츠에 vertical 및 start 인셋을 적용합니다.ModalBottomSheet
: 하단 인셋을 적용합니다.NavigationBar
: 하단 및 가로 인셋을 적용합니다.NavigationRail
: vertical 및 start 인셋을 적용합니다.
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") } )