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

Метод open

Метод open класса DrawerState выдвигает боковое меню. Это suspend-функция, её нельзя вызвать напрямую из onClick. Обычно берут rememberCoroutineScope и пишут scope.launch { drawerState.open() }. Состояние заранее создают через rememberDrawerState.

Синтаксис

drawerState.open()

Пример

Давайте откроем drawer по нажатию на иконку меню:

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.Menu import androidx.compose.material3.DrawerValue import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.ModalNavigationDrawer import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.material3.rememberDrawerState import androidx.compose.runtime.rememberCoroutineScope import kotlinx.coroutines.launch @OptIn(ExperimentalMaterial3Api::class) class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { val drawerState = rememberDrawerState(DrawerValue.Closed) val scope = rememberCoroutineScope() ModalNavigationDrawer( drawerState = drawerState, drawerContent = { Text(text = "abcde") }, ) { TopAppBar( title = { Text("12345") }, navigationIcon = { IconButton( onClick = { scope.launch { drawerState.open() } }, ) { Icon( imageVector = Icons.Filled.Menu, contentDescription = "12345", ) } }, ) } } } }

На экране после нажатия на меню панель выедет слева.

Пример

Давайте откроем панель сразу после входа на экран:

import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.material3.DrawerValue import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ModalNavigationDrawer import androidx.compose.material3.Text import androidx.compose.material3.rememberDrawerState import androidx.compose.runtime.LaunchedEffect @OptIn(ExperimentalMaterial3Api::class) class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { val drawerState = rememberDrawerState(DrawerValue.Closed) LaunchedEffect(Unit) { drawerState.open() } ModalNavigationDrawer( drawerState = drawerState, drawerContent = { Text(text = "abcde") }, ) { Text(text = "12345") } } } }

На экране меню откроется без нажатия, когда стартует LaunchedEffect.

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

  • метод close,
    который прячет панель
  • класс DrawerState,
    у которого вызывают open
  • функция rememberDrawerState,
    которая создаёт drawerState
  • функция ModalNavigationDrawer,
    которая рисует панель по состоянию
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить