Функция AlertDialog
Функция AlertDialog рисует окно поверх экрана
с заголовком, текстом и кнопками действий.
Закрытие задают в onDismissRequest,
основную кнопку - в confirmButton,
отмену - в dismissButton,
заголовок и текст - в лямбдах
title и text.
Синтаксис
AlertDialog(
onDismissRequest = { },
confirmButton = {
TextButton(onClick = { }) {
Text("abcde")
}
},
dismissButton = {
TextButton(onClick = { }) {
Text("12345")
}
},
title = { Text("abcde") },
text = { Text("12345") },
)
Параметры
| Параметр | Описание |
|---|---|
onDismissRequest |
Лямбда без аргументов. Срабатывает, когда диалог нужно закрыть: по кнопке «назад» или по клику вне окна. |
confirmButton |
Лямбда с главной кнопкой действия.
Чаще всего внутри вызывают
TextButton.
|
dismissButton |
Лямбда с кнопкой отмены. Можно не передавать, если второе действие не нужно. |
title |
Лямбда с заголовком диалога. Обычно
внутри вызывают Text.
|
text |
Лямбда с основным текстом под заголовком.
Тоже чаще всего через Text.
|
Пример
Давайте выведем диалог с двумя кнопками:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
AlertDialog(
onDismissRequest = { },
confirmButton = {
TextButton(onClick = { }) {
Text(text = "abcde")
}
},
dismissButton = {
TextButton(onClick = { }) {
Text(text = "12345")
}
},
title = { Text(text = "abcde") },
text = { Text(text = "12345") },
)
}
}
}
На экране поверх содержимого появится окно с заголовком, текстом и двумя текстовыми кнопками внизу.
Пример
Давайте оставим только кнопку подтверждения:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
AlertDialog(
onDismissRequest = { },
confirmButton = {
TextButton(onClick = { }) {
Text(text = "abcde")
}
},
title = { Text(text = "abcde") },
text = { Text(text = "12345") },
)
}
}
}
На экране в диалоге останется одна кнопка
с подписью "abcde", без отдельной отмены.
Смотрите также
-
функция
TextButton,
которой набирают кнопки в слотах диалога -
функция
Button,
если нужна залитая кнопка вместо текстовой -
функция
Text,
которой задают заголовок и текст диалога -
функция
Card,
которая тоже рисует отдельный блок на экране