Die Komponente der Navigationsleiste ist ein eingeschobenes Menü, über das Nutzer zu verschiedenen Bereichen Ihrer App navigieren können. Sie können sie aktivieren, indem sie von der Seite wischen oder auf ein Menüsymbol tippen.
Betrachten Sie diese drei Anwendungsfälle für die Implementierung einer Navigationsleiste:
- Inhaltsorganisation:Nutzer können zwischen verschiedenen Kategorien wechseln, z. B. in Nachrichten- oder Blogging-Apps.
- Kontoverwaltung:Stellen Sie Direktlinks zu Kontoeinstellungen und Profilbereichen in Apps mit Nutzerkonten bereit.
- Funktionserkennung:Sie können mehrere Funktionen und Einstellungen in einem einzigen Menü zusammenfassen, um die Auffindbarkeit und den Zugriff für Nutzer auf komplexe Apps zu erleichtern.
In Material Design gibt es zwei Arten von Navigationsleisten:
- Standard:Damit wird ein Bereich auf einem Bildschirm mit anderen Inhalten geteilt.
- Modal:Wird über anderen Inhalten auf dem Bildschirm eingeblendet.
Beispiel
Mit der zusammensetzbaren Funktion ModalNavigationDrawer
können Sie eine Navigationsleiste implementieren.
Verwende die drawerContent
-Fläche, um ein ModalDrawerSheet
und den Inhalt der Leiste bereitzustellen, wie im folgenden Beispiel gezeigt:
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 }
Für ModalNavigationDrawer
sind weitere Parameter für die Leiste zulässig. So können Sie beispielsweise mit dem Parameter gesturesEnabled
festlegen, ob die Leiste auf Ziehbewegungen reagiert, wie im folgenden Beispiel gezeigt:
ModalNavigationDrawer( drawerContent = { ModalDrawerSheet { // Drawer contents } }, gesturesEnabled = false ) { // Screen content }
Steuerungsverhalten
Mit DrawerState
können Sie steuern, wie die Leiste geöffnet und geschlossen wird. Übergeben Sie DrawerState
mit dem Parameter drawerState
an ModalNavigationDrawer
.
DrawerState
bietet Zugriff auf die Funktionen open
und close
sowie auf Eigenschaften im aktuellen Zustand der Leiste. Diese Aussetzenfunktionen erfordern eine CoroutineScope
, die Sie mit rememberCoroutineScope
instanziieren können. Sie können die Sperrfunktionen auch als Reaktion auf UI-Ereignisse aufrufen.
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 } }