Метод close
Метод close класса
DrawerState
убирает боковое меню с экрана.
Метод suspend, его вызывают
внутри корутины через
rememberCoroutineScope
или LaunchedEffect.
Часто вызывают в onClick
у
NavigationDrawerItem
после выбора раздела.
Синтаксис
drawerState.close()
Пример
Давайте закроем 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.Home
import androidx.compose.material3.DrawerValue
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon
import androidx.compose.material3.ModalDrawerSheet
import androidx.compose.material3.ModalNavigationDrawer
import androidx.compose.material3.NavigationDrawerItem
import androidx.compose.material3.Text
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.Open)
val scope = rememberCoroutineScope()
ModalNavigationDrawer(
drawerState = drawerState,
drawerContent = {
ModalDrawerSheet {
NavigationDrawerItem(
label = { Text("abcde") },
selected = true,
onClick = {
scope.launch { drawerState.close() }
},
icon = {
Icon(
imageVector = Icons.Filled.Home,
contentDescription = "abcde",
)
},
)
}
},
) {
Text(text = "12345")
}
}
}
}
На экране после нажатия на пункт "abcde"
панель уедет и останется текст "12345".
Пример
Давайте закроем открытую панель из LaunchedEffect:
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
import kotlinx.coroutines.delay
@OptIn(ExperimentalMaterial3Api::class)
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val drawerState = rememberDrawerState(DrawerValue.Open)
LaunchedEffect(Unit) {
delay(2000)
drawerState.close()
}
ModalNavigationDrawer(
drawerState = drawerState,
drawerContent = {
Text(text = "abcde")
},
) {
Text(text = "12345")
}
}
}
}
На экране через две секунды панель сама закроется после вызова close в LaunchedEffect.
Смотрите также
-
метод
open,
который открывает панель -
класс
DrawerState,
которым управляют drawer-ы -
функция
NavigationDrawerItem,
в onClick которой часто вызывают close -
функция
ModalNavigationDrawer,
которая показывает и прячет меню