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

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