Über die Navigationsleiste können Nutzer zwischen Zielen in einer App wechseln. Navigationsleisten sollten für Folgendes verwendet werden:
- Drei bis fünf gleich wichtige Ziele
- Kompakte Fenstergrößen
- Konsistente Ziele auf allen App-Bildschirmen
Auf dieser Seite erfahren Sie, wie Sie in Ihrer App eine Navigationsleiste mit zugehörigen Bildschirmen und grundlegender Navigation anzeigen.
API-Oberfläche
Verwenden Sie die kombinierbaren Funktionen NavigationBar und NavigationBarItem, um die Logik für das Wechseln des Ziels zu implementieren. Jedes NavigationBarItem steht für ein einzelnes Ziel.
NavigationBarItem enthält die folgenden Schlüsselparameter:
selectedgibt an, ob das aktuelle Element visuell hervorgehoben wird.onClick(): Definiert die Aktion, die ausgeführt werden soll, wenn der Nutzer auf das Element klickt. Hier gehört die Logik für die Verarbeitung von Navigationsereignissen, die Aktualisierung des Status des ausgewählten Elements oder das Laden entsprechender Inhalte hin.labelzeigt Text innerhalb des Elements an. Optional.iconzeigt ein Symbol im Element an. Optional.
Beispiel: Untere Navigationsleiste
Im folgenden Snippet wird eine untere Navigationsleiste mit Elementen implementiert, damit Nutzer zwischen verschiedenen Bildschirmen in einer App wechseln können:
@Composable fun NavigationBarExample(modifier: Modifier = Modifier) { val navController = rememberNavController() val startDestination = Destination.SONGS var selectedDestination by rememberSaveable { mutableIntStateOf(startDestination.ordinal) } Scaffold( modifier = modifier, bottomBar = { NavigationBar(windowInsets = NavigationBarDefaults.windowInsets) { Destination.entries.forEachIndexed { index, destination -> NavigationBarItem( selected = selectedDestination == index, onClick = { navController.navigate(route = destination.route) selectedDestination = index }, icon = { Icon( destination.icon, contentDescription = destination.contentDescription ) }, label = { Text(destination.label) } ) } } } ) { contentPadding -> AppNavHost(navController, startDestination, modifier = Modifier.padding(contentPadding)) } }
Wichtige Fakten
NavigationBarzeigt eine Sammlung von Elementen an, wobei jedes Element einemDestinationentspricht.val navController = rememberNavController()erstellt eine Instanz vonNavHostControllerund speichert sie. Diese Instanz verwaltet die Navigation innerhalb einesNavHost.var selectedDestination by rememberSaveable { mutableIntStateOf(startDestination.ordinal) }verwaltet den Status des ausgewählten Elements.startDestination.ordinalruft den numerischen Index (Position) des Enum-EintragsDestination.SONGSab.
- Wenn auf ein Element geklickt wird, wird
navController.navigate(route = destination.route)aufgerufen, um zum entsprechenden Bildschirm zu gelangen. - Die Lambda-Funktion
onClickvonNavigationBarItemaktualisiert den StatusselectedDestination, um das angeklickte Element visuell hervorzuheben. - Die Navigationslogik ruft die kombinierbare Funktion
AppNavHostauf und übergibtnavControllerundstartDestination, um den tatsächlichen Inhalt des ausgewählten Bildschirms anzuzeigen.
Ergebnis
Die folgende Abbildung zeigt die Navigationsleiste, die sich aus dem vorherigen Snippet ergibt:
