Класс 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".
Смотрите также
-
функция
rememberDrawerState,
которая создаёт объект DrawerState -
функция
ModalNavigationDrawer,
которая читает drawerState при рисовании -
функция
DismissibleNavigationDrawer,
которая сдвигает content вместе с панелью -
функция
NavigationDrawerItem,
которую кладут в drawerContent