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")
    }
)