Die Komponente der Navigationsleiste ist ein eingeschobenes Menü, mit dem Nutzer zwischen für verschiedene Bereiche Ihrer App. Nutzer können sie durch Wischen von der Seite aktivieren. oder auf ein Menüsymbol tippen.
Betrachten Sie diese drei Anwendungsfälle für die Implementierung einer Navigationsleiste:
- Inhaltsorganisation: Ermöglichen Sie Nutzern, zwischen verschiedenen Kategorien zu wechseln, z. B. in Nachrichten- oder Blogging-Apps.
- Kontoverwaltung:Direktlinks zu den Kontoeinstellungen und dem Profil hinzufügen Bereiche in Apps mit Nutzerkonten.
- Funktion entdecken:Mehrere Funktionen und Einstellungen an einem Ort um Nutzer in komplexen Apps leichter zu finden und darauf zuzugreifen.
In Material Design gibt es zwei Arten von Navigationsleisten:
- Standard:Sie können den Bildschirmbereich mit anderen Inhalten teilen.
- Modal:Wird über anderen Inhalten auf einem Bildschirm eingeblendet.
Beispiel
Mit der zusammensetzbaren Funktion ModalNavigationDrawer
können Sie ein
Navigationsleiste.
Verwenden Sie den Slot drawerContent
, um ModalDrawerSheet
und
Inhalt der Leiste wie im folgenden Beispiel:
ModalNavigationDrawer( drawerContent = { ModalDrawerSheet { Text("Drawer title", modifier = Modifier.padding(16.dp)) HorizontalDivider() NavigationDrawerItem( label = { Text(text = "Drawer Item") }, selected = false, onClick = { /*TODO*/ } ) // ...other drawer items } } ) { // Screen content }
Für ModalNavigationDrawer
sind eine Reihe zusätzlicher Parameter für Auszüge zulässig. So können Sie beispielsweise mit dem Parameter gesturesEnabled
festlegen, ob die Schublade auf Ziehen reagiert oder nicht, wie im folgenden Beispiel:
ModalNavigationDrawer( drawerContent = { ModalDrawerSheet { // Drawer contents } }, gesturesEnabled = false ) { // Screen content }
Verhalten steuern
Mit DrawerState
können Sie festlegen, wie die Leiste geöffnet und geschlossen wird. Sie sollten
DrawerState
über drawerState
an ModalNavigationDrawer
übergeben
.
DrawerState
bietet Zugriff auf die Funktionen open
und close
sowie auf Properties, die sich auf den aktuellen Schiebereglerstatus beziehen. Diese
Für Funktionen ist ein CoroutineScope
erforderlich, das Sie mit
rememberCoroutineScope
Sie können die Unterbrechungsfunktionen auch in
auf UI-Ereignisse.
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 } }