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

Функция NavigationRailItem

Функция NavigationRailItem рисует одну вкладку внутри NavigationRail. Активность задают через selected, нажатие - через onClick. Иконку кладут в icon, подпись - в label. Параметры совпадают с NavigationBarItem.

Синтаксис

NavigationRailItem( selected = true, onClick = { }, icon = { Icon(Icons.Filled.Home, contentDescription = "abcde") }, label = { Text("abcde") }, )

Параметры

Параметр Описание
selected true, если вкладка выбрана.
onClick Лямбда при нажатии на пункт.
icon Лямбда с иконкой из Icons через Icon.
label Лямбда с короткой подписью рядом или под иконкой.
alwaysShowLabel Показывать подпись только у выбранного пункта, если передать false.

Пример

Давайте переключим текст по пункту 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.Person 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.Person, contentDescription = "12345", ) }, label = { Text("12345") }, ) } Text(text = if (tab == 0) "abcde" else "12345") } } } }

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

Пример

Давайте спрячем подпись у невыбранного пункта:

import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent 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) } NavigationRail { NavigationRailItem( selected = tab == 0, onClick = { tab = 0 }, icon = { Icon( imageVector = Icons.Filled.Home, contentDescription = "abcde", ) }, label = { Text("abcde") }, alwaysShowLabel = false, ) NavigationRailItem( selected = tab == 1, onClick = { tab = 1 }, icon = { Icon( imageVector = Icons.Filled.Settings, contentDescription = "12345", ) }, label = { Text("12345") }, alwaysShowLabel = false, ) } } } }

На экране подпись останется только у активной вкладки rail.

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

  • функция NavigationRail,
    которая собирает пункты в боковой столбец
  • функция NavigationBarItem,
    которая рисует такой же пункт снизу экрана
  • функция NavigationDrawerItem,
    которая рисует строку в выдвижном меню
  • функция Icon,
    которую передают в icon
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить