Pasek nawigacyjny umożliwia użytkownikom przełączanie się między miejscami docelowymi w aplikacji. Paski nawigacyjne należy stosować w przypadku:
- 3–5 miejsc docelowych o równym znaczeniu
- Kompaktowe rozmiary okien
- spójne miejsca docelowe na różnych ekranach aplikacji;

Na tej stronie dowiesz się, jak wyświetlić w aplikacji pasek nawigacji z powiązanymi ekranami i podstawową nawigacją.
Interfejs API
Aby zaimplementować logikę przełączania miejsc docelowych, użyj kompozytów NavigationBar
i NavigationBarItem
. Każdy element NavigationBarItem
reprezentuje pojedyncze miejsce docelowe.
NavigationBarItem
zawiera te kluczowe parametry:
selected
: określa, czy bieżący element jest wizualnie wyróżniony.onClick()
: wymagana funkcja lambda, która określa działanie wykonywane po kliknięciu elementu przez użytkownika. Tutaj zwykle obsługujesz zdarzenia nawigacyjne, aktualizujesz stan wybranego elementu lub wczytujesz odpowiednią treść.label
: wyświetla tekst w elemencie. Opcjonalnie:icon
: wyświetla ikonę w produkcie. Opcjonalnie:
Przykład: dolny pasek nawigacyjny
Ten fragment kodu wdraża pasek dolnej nawigacji z elementami, dzięki którym użytkownicy mogą się poruszać między różnymi ekranami w aplikacji:
@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)) } }
Najważniejsze punkty
NavigationBar
wyświetla kolekcję elementów, z których każdy odpowiadaDestination
.val navController = rememberNavController()
tworzy i zapamiętuje wystąpienieNavHostController
, które zarządza nawigacją wNavHost
.var selectedDestination by rememberSaveable { mutableIntStateOf(startDestination.ordinal)
} zarządza stanem aktualnie wybranego elementu.var selectedDestination by rememberSaveable { mutableIntStateOf(startDestination.ordinal) }
określa stan aktualnie wybranego elementu.startDestination.ordinal
zwraca indeks numeryczny (pozycję) elementu listyDestination.SONGS
.
- Gdy użytkownik kliknie element, funkcja
navController.navigate(route = destination.route)
zostanie wywołana, aby przejść do odpowiedniego ekranu. - Lambda
onClick
elementuNavigationBarItem
aktualizuje stanselectedDestination
, aby wizualnie wyróżnić kliknięty element. - Wywołuje kompozyt
AppNavHost
, przekazującnavController
istartDestination
, aby wyświetlić rzeczywistą zawartość wybranego ekranu.
Wynik
Na tym obrazie widać pasek nawigacji utworzony na podstawie poprzedniego fragmentu kodu:
