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

Функция PermanentNavigationDrawer

Функция PermanentNavigationDrawer рисует меню и content в один ряд. Панель не перекрывает экран и не закрывается жестом. Меню передают в drawerContent, основной экран - в content. Подходит для широких экранов и планшетов.

Синтаксис

PermanentNavigationDrawer( drawerContent = { NavigationDrawerItem( label = { Text("abcde") }, selected = true, onClick = { }, icon = { }, ) }, ) { content() }

Параметры

Параметр Описание
drawerContent Лямбда с постоянной боковой панелью. Обычно внутри NavigationDrawerItem.
content Лямбда с основным экраном справа от меню.

Пример

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

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.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.NavigationDrawerItem import androidx.compose.material3.PermanentNavigationDrawer import androidx.compose.material3.Text @OptIn(ExperimentalMaterial3Api::class) class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { PermanentNavigationDrawer( drawerContent = { NavigationDrawerItem( label = { Text("abcde") }, selected = true, onClick = { }, icon = { Icon( imageVector = Icons.Filled.Home, contentDescription = "abcde", ) }, ) }, ) { Text(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.Settings import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.NavigationDrawerItem import androidx.compose.material3.PermanentNavigationDrawer 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 @OptIn(ExperimentalMaterial3Api::class) class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { var item by remember { mutableIntStateOf(0) } PermanentNavigationDrawer( drawerContent = { NavigationDrawerItem( label = { Text("abcde") }, selected = item == 0, onClick = { item = 0 }, icon = { Icon( imageVector = Icons.Filled.Home, contentDescription = "abcde", ) }, ) NavigationDrawerItem( label = { Text("12345") }, selected = item == 1, onClick = { item = 1 }, icon = { Icon( imageVector = Icons.Filled.Settings, contentDescription = "12345", ) }, ) }, ) { Text(text = if (item == 0) "abcde" else "12345") } } } }

На экране выбранный пункт подсветится, а текст справа сменится без анимации drawer.

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

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