Навигационный рельс

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

  • Ключевые элементы, которые должны быть доступны в любой точке приложения.
  • От трех до семи основных направлений
  • Макет для планшетов или настольных компьютеров
Вертикальная панель навигации в левой части экрана с четырьмя разделами (Все файлы, Недавние, Фотографии и Библиотека), каждый из которых имеет соответствующую иконку, а также плавающая кнопка действия.
Рисунок 1. Навигационная панель с четырьмя пунктами назначения и плавающей кнопкой действия.

На этой странице показано, как отобразить элементы 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 , для отображения фактического содержимого выбранного экрана.

Результат

На следующем изображении показан результат предыдущего фрагмента кода:

Вертикальная панель навигации с тремя разделами и соответствующими значками: «Песни», «Альбом» и «Плейлист». Значки визуально указывают на назначение каждой кнопки навигации в панели. Каждому разделу соответствует свой значок (например, нота для
Рисунок 2. Панель навигации, содержащая 3 пункта назначения с соответствующими значками: Песни, Альбом и Плейлист.

Дополнительные ресурсы