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

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

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

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