Панель навигации позволяет пользователям переключаться между разделами приложения. Панели навигации следует использовать для:
- От трех до пяти направлений одинаковой важности
- Компактные размеры окон
- Единообразные пункты назначения на всех экранах приложения

На этой странице показано, как отобразить в приложении панель навигации со связанными экранами и базовой навигацией.
API поверхность
 Используйте компонуемые элементы NavigationBar и NavigationBarItem для реализации логики переключения пунктов назначения. Каждый NavigationBarItem представляет отдельный пункт назначения.
 NavigationBarItem включает следующие ключевые параметры:
-  selected: определяет, выделен ли текущий элемент визуально.
-  onClick(): определяет действие, которое будет выполнено при щелчке пользователя по элементу. Логика обработки событий навигации, обновления состояния выбранного элемента и загрузки соответствующего контента находится здесь.
-  label: отображает текст внутри элемента. Необязательно.
-  icon: отображает значок внутри элемента. Необязательно.
Пример: нижняя панель навигации
В следующем фрагменте кода реализована нижняя навигационная панель с элементами, позволяющими пользователям перемещаться между различными экранами в приложении:
@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)) } }
Ключевые моменты
-  NavigationBarотображает коллекцию элементов, каждый из которых соответствует пунктуDestination.
-  val navController = rememberNavController()создает и запоминает экземплярNavHostController, который управляет навигацией внутриNavHost.
-  var selectedDestination by rememberSaveable { mutableIntStateOf(startDestination.ordinal) }управляет состоянием выбранного элемента.-  startDestination.ordinalполучает числовой индекс (позицию) записи перечисленияDestination.SONGS.
 
-  
-  При щелчке по элементу вызывается navController.navigate(route = destination.route)для перехода на соответствующий экран.
-  Лямбда-функция onClickэлементаNavigationBarItemобновляет состояниеselectedDestinationчтобы визуально выделить выбранный элемент.
-  Логика навигации вызывает составной объект AppNavHost, передаваяnavControllerиstartDestinationдля отображения фактического содержимого выбранного экрана.
Результат
На следующем изображении показана панель навигации, полученная в результате предыдущего фрагмента:

