ボトムシートを部分的に表示し、ユーザーが全画面表示または閉じるようにすることができます。
これを行うには、skipPartiallyExpanded
を false
に設定した SheetState
のインスタンスを ModalBottomSheet
に渡します。
例
この例は、ModalBottomSheet
の sheetState
プロパティを使用して、最初はシートの一部のみを表示する方法を示しています。
@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
は、アプリがボトムシートを表示するかどうかを制御します。sheetState
はSheetState
のインスタンスで、skipPartiallyExpanded
は false です。ModalBottomSheet
は、完全に展開されたときに画面全体に表示されるようにする修飾子を取ります。ModalBottomSheet
は、sheetState
パラメータの値としてsheetState
を受け取ります。- そのため、シートを初めて開いたときには一部しか表示されません。ユーザーは、ドラッグまたはスワイプして全画面表示にしたり、閉じたりできます。
onDismissRequest
ラムダは、ユーザーがボトムシートを閉じようとしたときに何が起こるかを制御します。この場合、シートのみが削除されます。
結果
ユーザーがボタンを最初に押すと、シートの一部が表示されます。

ユーザーがシートを上にスワイプすると、シートが画面全体に表示されます。
