ボトムシートを部分的に表示してから、ユーザーが全画面表示にするか閉じられるようにできます。
これを行うには、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
ラムダは、ユーザーがボトムシートを閉じようとしたときに何が起きるかを制御します。この場合は、シートのみが削除されます。
結果
ユーザーがボタンを最初に押すと、シートの一部が表示されます。
ユーザーがシートを上にスワイプすると、シートが画面全体に表示されます。