Le barre forniscono l'accesso alle destinazioni nelle app eseguite su dispositivi con schermi grandi. Devi utilizzare le barre di navigazione per:
- Destinazioni di primo livello che devono essere accessibili ovunque in un'app
- Da tre a sette destinazioni principali
- Layout per tablet o computer

Questa pagina mostra come visualizzare le guide nell'app con schermate correlate e navigazione di base.
Superficie API
Utilizza il composable NavigationRail
con NavigationRailItem
per
implementare una barra nella tua applicazione. NavigationRailItem
rappresenta un
singolo elemento della sezione nella colonna della sezione.
NavigationRailItem
include i seguenti parametri chiave:
selected
: determina se l'elemento della sezione corrente è evidenziato visivamente.onClick()
: una funzione Lambda obbligatoria che definisce l'azione da eseguire quando l'utente fa clic sull'elemento della guida. In genere qui gestisci gli eventi di navigazione, aggiorni lo stato dell'elemento della barra selezionato o carichi i contenuti corrispondenti.label
: Visualizza il testo all'interno dell'elemento della guida. Facoltativo.icon
: mostra un'icona all'interno dell'elemento della barra. Facoltativo.
Esempio: navigazione basata su binari
Il seguente snippet implementa una barra di spostamento in modo che gli utenti possano spostarsi tra le diverse schermate di un'app:
@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) } }
Punti chiave
NavigationRail
mostra una colonna verticale di elementi della guida, con ogni elemento corrispondente a unDestination
.val navController = rememberNavController()
crea e memorizza un'istanza diNavHostController
, che gestisce la navigazione all'interno di unNavHost
.var selectedDestination by rememberSaveable { mutableIntStateOf(startDestination.ordinal) }
gestisce lo stato dell'elemento della barra selezionato.startDestination.ordinal
restituisce l'indice numerico (posizione) della voce di enumerazioneDestination.SONGS
.
- Quando si fa clic su un elemento della barra, viene chiamato
navController.navigate(route = destination.route)
per passare alla schermata corrispondente. - La lambda
onClick
diNavigationRailItem
aggiorna lo stato diselectedDestination
per evidenziare visivamente l'elemento della rotaia su cui è stato fatto clic. - Chiama il composable
AppNavHost
, passandonavController
estartDestination
, per visualizzare i contenuti effettivi della schermata selezionata.
Risultato
L'immagine seguente mostra il risultato dello snippet precedente:
