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

Функция NavigationBarItem

Функция NavigationBarItem рисует одну вкладку внутри NavigationBar. Выбор задают флагом selected, реакцию на нажатие - в onClick. Иконку передают в icon, подпись - в label.

Синтаксис

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

Параметры

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

Пример

Давайте переключим текст по нажатию на вкладку:

import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.layout.Column 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.NavigationBar import androidx.compose.material3.NavigationBarItem 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) } Column { Text(text = if (tab == 0) "abcde" else "12345") NavigationBar { NavigationBarItem( selected = tab == 0, onClick = { tab = 0 }, icon = { Icon( imageVector = Icons.Filled.Home, contentDescription = "abcde", ) }, label = { Text("abcde") }, ) NavigationBarItem( selected = tab == 1, onClick = { tab = 1 }, icon = { Icon( imageVector = Icons.Filled.Settings, contentDescription = "12345", ) }, label = { Text("12345") }, ) } } } } }

На экране выбранная вкладка подсветится, а строка над панелью покажет "abcde" или "12345".

Пример

Давайте оставим подпись только у активной вкладки:

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.Person import androidx.compose.material3.Icon import androidx.compose.material3.NavigationBar import androidx.compose.material3.NavigationBarItem 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) } NavigationBar { NavigationBarItem( selected = tab == 0, onClick = { tab = 0 }, icon = { Icon( imageVector = Icons.Filled.Home, contentDescription = "abcde", ) }, label = { Text("abcde") }, alwaysShowLabel = false, ) NavigationBarItem( selected = tab == 1, onClick = { tab = 1 }, icon = { Icon( imageVector = Icons.Filled.Person, contentDescription = "12345", ) }, label = { Text("12345") }, alwaysShowLabel = false, ) } } } }

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

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

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