부분 하단 시트

하단 시트를 부분적으로 표시한 다음 사용자가 전체 화면으로 만들거나 닫을 수 있도록 허용할 수 있습니다.

이렇게 하려면 skipPartiallyExpandedfalse로 설정한 SheetState의 인스턴스를 ModalBottomSheet에 전달합니다.

이 예에서는 ModalBottomSheetsheetState 속성을 사용하여 처음에는 시트를 부분적으로만 표시하는 방법을 보여줍니다.

@Composable
fun PartialBottomSheet() {
    var showBottomSheet by remember { mutableStateOf(false) }
    val sheetState = rememberModalBottomSheetState(
        skipPartiallyExpanded = false,
    )

    Column(
        modifier = Modifier.fillMaxWidth(),
        horizontalAlignment = Alignment.CenterHorizontally,
    ) {
        Button(
            onClick = { showBottomSheet = true }
        ) {
            Text("Display partial bottom sheet")
        }

        if (showBottomSheet) {
            ModalBottomSheet(
                modifier = Modifier.fillMaxHeight(),
                sheetState = sheetState,
                onDismissRequest = { showBottomSheet = false }
            ) {
                Text(
                    "Swipe up to open sheet. Swipe down to dismiss.",
                    modifier = Modifier.padding(16.dp)
                )
            }
        }
    }
}

코드 관련 핵심 사항

이 예시에서 다음 사항에 유의하세요.

  • showBottomSheet는 앱이 하단 시트를 표시할지 여부를 제어합니다.
  • sheetStateskipPartiallyExpanded이 false인 SheetState의 인스턴스입니다.
  • ModalBottomSheet는 완전히 확장되었을 때 화면을 채우는 수정자를 사용합니다.
  • ModalBottomSheetsheetState 매개변수의 값으로 sheetState를 사용합니다.
    • 따라서 시트는 처음 열 때 일부만 표시됩니다. 그런 다음 사용자는 드래그하거나 스와이프하여 전체 화면으로 만들거나 닫을 수 있습니다.
  • onDismissRequest 람다 함수는 사용자가 하단 시트를 닫으려고 할 때 어떤 일이 발생하는지 제어합니다. 이 경우 시트만 삭제됩니다.

결과

사용자가 처음 버튼을 누르면 시트가 부분적으로 표시됩니다.

처음에는 화면의 일부만 채우는 하단 시트입니다. 사용자는 스와이프하여 화면을 가득 채우거나 닫을 수 있습니다.
그림 1. 하단 시트가 부분적으로 표시됩니다.

사용자가 시트를 위로 스와이프하면 시트가 화면을 채웁니다.

사용자가 화면을 채우도록 펼친 하단 시트입니다.
그림 2. 전체 화면 하단 시트

추가 리소스