Pasek nawigacyjny umożliwia użytkownikom przełączanie się między miejscami docelowymi w aplikacji. Pasków nawigacyjnych należy używać w tych przypadkach:
- 3–5 miejsc docelowych o równym znaczeniu
- kompaktowe rozmiary okien
- spójne miejsca docelowe na ekranach aplikacji
Na tej stronie dowiesz się, jak wyświetlić pasek nawigacyjny w aplikacji z powiązanymi ekranami i podstawową nawigacją.
Powierzchnia interfejsu API
Aby
zaimplementować logikę przełączania miejsc docelowych, użyj komponentów NavigationBar i NavigationBarItem. Każdy komponent NavigationBarItem reprezentuje pojedyncze miejsce docelowe.
NavigationBarItem zawiera te kluczowe parametry:
selected– określa, czy bieżący element jest wizualnie wyróżniony.onClick()– określa działanie, które ma zostać wykonane, gdy użytkownik kliknie element. Tutaj należy umieścić logikę obsługi zdarzeń nawigacji, aktualizowania stanu wybranego elementu lub wczytywania odpowiedniej treści.label– wyświetla tekst w elemencie. Opcjonalnie.icon– wyświetla ikonę w elemencie. Opcjonalnie.
Przykład: dolny pasek nawigacyjny
Ten fragment kodu implementuje dolny pasek nawigacyjny z elementami, dzięki którym użytkownicy mogą przechodzić 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
NavigationBarwyświetla zbiór elementów, z których każdy odpowiadaDestination.val navController = rememberNavController()tworzy i zapamiętuje instancjęNavHostController, która zarządza nawigacją wNavHost.var selectedDestination by rememberSaveable { mutableIntStateOf(startDestination.ordinal) }zarządza stanem wybranego elementu.startDestination.ordinalpobiera indeks liczbowy (pozycję) wpisu wyliczeniaDestination.SONGS.
- Gdy klikniesz element, wywoływana jest funkcja
navController.navigate(route = destination.route), która umożliwia przejście do odpowiedniego ekranu. - Lambda
onClickkomponentuNavigationBarItemaktualizuje stanselectedDestination, aby wizualnie wyróżnić kliknięty element. - Logika nawigacji wywołuje funkcję kompozycyjną
AppNavHost, przekazującnavControlleristartDestination, aby wyświetlić rzeczywistą zawartość wybranego ekranu.
Wynik
Ten obraz przedstawia pasek nawigacyjny utworzony na podstawie poprzedniego fragmentu kodu: