Material 3 인셋 사용

사용 편의성을 위해 많은 내장 Material 3 컴포저블(androidx.compose.material3)은 Material 사양에 따라 컴포저블이 앱에 배치되는 방식에 따라 인셋을 직접 처리합니다.

인셋 처리 컴포저블

다음은 인셋을 자동으로 처리하는 Material 구성요소 목록입니다.

앱 바

콘텐츠 컨테이너

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를 보여줍니다.

일반적으로 Scaffold에서 PaddingValues 매개변수를 사용하면 UI를 시스템 UI 및 디스플레이 컷아웃에서 멀리 삽입할 수 있습니다. Scaffold를 사용하는 경우 UI에 패딩이 너무 많이 적용되지 않도록 자, 패딩 수정자, 인셋 크기 수정자와 같은 추가 인셋 처리 방식을 사용하지 마세요.

기본 인셋 재정의

컴포저블에 전달된 windowInsets 매개변수를 변경하여 컴포저블의 동작을 구성할 수 있습니다. 이 매개변수는 대신 적용할 다른 유형의 창 인셋일 수도 있고 빈 인스턴스(WindowInsets(0, 0, 0, 0))를 전달하여 사용 중지할 수도 있습니다.

예를 들어 LargeTopAppBar에서 인셋 처리를 사용 중지하려면 windowInsets 매개변수를 빈 인스턴스로 설정합니다.

LargeTopAppBar(
    windowInsets = WindowInsets(0, 0, 0, 0),
    title = {
        Text("Hi")
    }
)