Функция DropdownMenu
Функция DropdownMenu рисует всплывающий блок
Material3 с дочерними элементами, обычно
DropdownMenuItem.
Видимость задают expanded,
закрытие обрабатывают в onDismissRequest.
Флаг expanded хранят через
remember
и mutableStateOf.
Синтаксис
DropdownMenu(
expanded = expanded,
onDismissRequest = { expanded = false },
) {
DropdownMenuItem(/* ... */)
}
Параметры
| Параметр | Описание |
|---|---|
expanded |
true, пока меню должно быть видно на экране.
|
onDismissRequest |
Вызывается при закрытии: нажатие вне меню
или выбор пункта. Обычно сбрасывают expanded.
|
content |
Лямбда с пунктами меню и другими дочерними элементами. |
Пример
Давайте откроем меню с двумя пунктами по кнопке:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.material3.Button
import androidx.compose.material3.DropdownMenu
import androidx.compose.material3.DropdownMenuItem
import androidx.compose.material3.Text
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
var expanded by remember { mutableStateOf(true) }
Button(onClick = { expanded = true }) {
Text("abcde")
}
DropdownMenu(
expanded = expanded,
onDismissRequest = { expanded = false },
) {
DropdownMenuItem(
text = { Text("abcde") },
onClick = { expanded = false },
)
DropdownMenuItem(
text = { Text("12345") },
onClick = { expanded = false },
)
}
}
}
}
На экране кнопка и под ней карточка меню
с двумя строками "abcde" и "12345".
Смотрите также
-
функция
DropdownMenuItem,
которая рисует одну строку меню -
функция
RadioButton,
которая выбирает вариант без всплывающего списка -
функция
OutlinedTextField,
которая вводит текст вручную -
функция
DatePickerDialog,
которая показывает календарь в диалоге