ナビゲーション ドロワー コンポーネントは、ユーザーが移動するためのスライドイン メニューです。 アプリの各セクションへの横からスワイプすることで有効にできる メニュー アイコンをタップします。
ナビゲーション ドロワーの実装には、次の 3 つのユースケースを考えてみましょう。
- コンテンツ整理: ユーザーが異なるコンテンツ レベルを たとえばニュースアプリやブログアプリなどです
- アカウント管理: アカウント設定とプロフィールへのクイックリンクを提供します。 セクションがあります。
- 機能の紹介: 複数の機能と設定を 1 つに整理できます 複雑なアプリでユーザーが見つけてアクセスしやすくします。
マテリアル デザインには、次の 2 種類のナビゲーション ドロワーがあります。
- 標準: 画面上のスペースを他のコンテンツと共有できます。
- モーダル: 画面内の他のコンテンツの上に表示されます。
例
ModalNavigationDrawer
コンポーザブルを使用して、
ナビゲーションドロワー
drawerContent
スロットを使用して ModalDrawerSheet
を指定し、
配置する必要があります。次の例をご覧ください。
ModalNavigationDrawer( drawerContent = { ModalDrawerSheet { Text("Drawer title", modifier = Modifier.padding(16.dp)) Divider() NavigationDrawerItem( label = { Text(text = "Drawer Item") }, selected = false, onClick = { /*TODO*/ } ) // ...other drawer items } } ) { // Screen content }
ModalNavigationDrawer
は他にさまざまなドロワー パラメータを受け入れます。対象
たとえば、ドロワーがドラッグに反応するかどうかを
gesturesEnabled
パラメータを使用します。
ModalNavigationDrawer( drawerContent = { ModalDrawerSheet { // Drawer contents } }, gesturesEnabled = false ) { // Screen content }
動作を制御する
ドロワーの開閉方法を制御するには、DrawerState
を使用します。すべきこと
drawerState
を使用して DrawerState
を ModalNavigationDrawer
に渡す
パラメータを指定します。
DrawerState
では、次のように open
関数と close
関数にアクセスできます。
現在のドロワーの状態に関連するプロパティを設定します。この停止状態は
関数には CoroutineScope
が必要です。これは、次のコマンドを使用してインスタンス化できます。
rememberCoroutineScope
。次のように、suspend 関数を
UI イベントに応答することもできます
val drawerState = rememberDrawerState(initialValue = DrawerValue.Closed) val scope = rememberCoroutineScope() ModalNavigationDrawer( drawerState = drawerState, drawerContent = { ModalDrawerSheet { /* Drawer content */ } }, ) { Scaffold( floatingActionButton = { ExtendedFloatingActionButton( text = { Text("Show drawer") }, icon = { Icon(Icons.Filled.Add, contentDescription = "") }, onClick = { scope.launch { drawerState.apply { if (isClosed) open() else close() } } } ) } ) { contentPadding -> // Screen content } }