Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
114 of 502 menu
◀ ▶

Функция NavigationRail

Функция NavigationRail рисует узкую панель слева или справа. Пункты - функции NavigationRailItem в лямбде content. Сверху можно поставить логотип через header. На телефоне чаще берут NavigationBar, на планшете - rail.

Синтаксис

NavigationRail { NavigationRailItem( selected = true, onClick = { }, icon = { }, label = { Text("abcde") }, ) }

Параметры

Параметр Описание
header Лямбда с элементом над вкладками, например логотипом.
content Лямбда с пунктами NavigationRailItem. Приёмник - область столбца.

Пример

Давайте поставим rail слева от текста:

import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.layout.Row import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Home import androidx.compose.material.icons.filled.Settings import androidx.compose.material3.Icon import androidx.compose.material3.NavigationRail import androidx.compose.material3.NavigationRailItem import androidx.compose.material3.Text import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { var tab by remember { mutableIntStateOf(0) } Row { NavigationRail { NavigationRailItem( selected = tab == 0, onClick = { tab = 0 }, icon = { Icon( imageVector = Icons.Filled.Home, contentDescription = "abcde", ) }, label = { Text("abcde") }, ) NavigationRailItem( selected = tab == 1, onClick = { tab = 1 }, icon = { Icon( imageVector = Icons.Filled.Settings, contentDescription = "12345", ) }, label = { Text("12345") }, ) } Text(text = if (tab == 0) "abcde" else "12345") } } } }

На экране слева будет вертикальный ряд вкладок, справа - текст выбранного раздела.

Пример

Давайте добавим иконку в header над вкладками:

import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.layout.Row import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Home import androidx.compose.material.icons.filled.Menu import androidx.compose.material3.Icon import androidx.compose.material3.NavigationRail import androidx.compose.material3.NavigationRailItem import androidx.compose.material3.Text class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { Row { NavigationRail( header = { Icon( imageVector = Icons.Filled.Menu, contentDescription = "abcde", ) }, ) { NavigationRailItem( selected = true, onClick = { }, icon = { Icon( imageVector = Icons.Filled.Home, contentDescription = "12345", ) }, label = { Text("abcde") }, ) } Text(text = "12345") } } } }

На экране над вкладками появится иконка меню, а под ней - выбранный пункт rail.

Смотрите также

  • функция NavigationRailItem,
    которая рисует один пункт боковой панели
  • функция NavigationBar,
    которая ставит те же вкладки снизу
  • функция Row,
    которая ставит rail и content в один ряд
  • функция PermanentNavigationDrawer,
    которая держит широкое меню постоянно открытым
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить