Rails bieten Zugriff auf Ziele in Apps, die auf Geräten mit großen Bildschirmen ausgeführt werden. Navigationsleisten sollten Sie in folgenden Fällen verwenden:
- Ziele auf oberster Ebene, auf die überall in einer App zugegriffen werden muss
- Drei bis sieben Hauptziele
- Tablet- oder Desktop-Layouts

Auf dieser Seite erfahren Sie, wie Sie in Ihrer App Navigationsleisten mit zugehörigen Bildschirmen und einfacher Navigation anzeigen.
API-Oberfläche
Verwenden Sie NavigationRail
, das mit NavigationRailItem
kombinierbar ist, um eine Schiene in Ihrer Anwendung zu implementieren. Das NavigationRailItem
steht für ein einzelnes Bahnelement in der Bahnspalte.
NavigationRailItem
umfasst die folgenden wichtigen Parameter:
selected
: Bestimmt, ob das aktuelle Bahnelement visuell hervorgehoben wird.onClick()
: Eine erforderliche Lambda-Funktion, die die Aktion definiert, die ausgeführt werden soll, wenn der Nutzer auf das Element in der Leiste klickt. Hier werden in der Regel Navigationsereignisse verarbeitet, der Status des ausgewählten Navigationselements aktualisiert oder entsprechende Inhalte geladen.label
: Hier wird Text im Anzeigen-Element angezeigt. Optional:icon
: Im Bereich „Rail-Elemente“ wird ein Symbol angezeigt. Optional:
Beispiel: Bahnbasierte Navigation
Im folgenden Snippet wird ein Navigationsstreifen implementiert, über den Nutzer zwischen verschiedenen Bildschirmen in einer App wechseln können:
@Composable fun NavigationRailExample(modifier: Modifier = Modifier) { val navController = rememberNavController() val startDestination = Destination.SONGS var selectedDestination by rememberSaveable { mutableIntStateOf(startDestination.ordinal) } Scaffold(modifier = modifier) { contentPadding -> NavigationRail(modifier = Modifier.padding(contentPadding)) { Destination.entries.forEachIndexed { index, destination -> NavigationRailItem( selected = selectedDestination == index, onClick = { navController.navigate(route = destination.route) selectedDestination = index }, icon = { Icon( destination.icon, contentDescription = destination.contentDescription ) }, label = { Text(destination.label) } ) } } AppNavHost(navController, startDestination) } }
Wichtige Fakten
NavigationRail
zeigt eine vertikale Spalte mit Schienenelementen an, wobei jedes Element einemDestination
entspricht.val navController = rememberNavController()
erstellt und speichert eine Instanz vonNavHostController
, die die Navigation innerhalb einerNavHost
verwaltet.var selectedDestination by rememberSaveable { mutableIntStateOf(startDestination.ordinal) }
verwaltet den Status des aktuell ausgewählten Bahnelementes.startDestination.ordinal
ruft den numerischen Index (die Position) desDestination.SONGS
-Eintrags ab.
- Wenn auf ein Element in der Leiste geklickt wird, wird
navController.navigate(route = destination.route)
aufgerufen, um zum entsprechenden Bildschirm zu wechseln. - Das
onClick
-Lambda desNavigationRailItem
aktualisiert denselectedDestination
-Status, um das angeklickte Element im Navigationsstreifen visuell hervorzuheben. - Es ruft das
AppNavHost
-Komposit auf und übergibtnavController
undstartDestination
, um den tatsächlichen Inhalt des ausgewählten Bildschirms anzuzeigen.
Ergebnis
Das folgende Bild zeigt das Ergebnis des vorherigen Snippets:
