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

Класс DrawerState

Класс DrawerState описывает положение выдвижного меню. Объект получают из rememberDrawerState и передают в drawer у ModalNavigationDrawer. Открыть панель помогает suspend-метод open, закрыть - метод close. Их вызывают из корутины, например через rememberCoroutineScope.

Синтаксис

val drawerState = rememberDrawerState(DrawerValue.Closed)

Методы

Метод Описание
open Suspend-метод, который анимированно открывает панель.
close Suspend-метод, который анимированно закрывает панель.

Пример

Давайте откроем 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", ) } }, ) } } } }

На экране по нажатию на иконку меню панель откроется и покажет текст "abcde".

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

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить