4.3 KiB
alerts
Общее описание
Модуль содержит:
AlertDialogManager - служит для демонстрации AlertDialog с использованием View, необходимо вызвать метод showAlertDialog, который
в качестве агруметов может принимать:
- context
- style - стиль для элементов дефолтного диалога (по умолчанию R.style.AlertDialogDefault)
- title - Заголовок диалога
- message - дополнительное сообщение
- positiveButtonText - текст правой кнопки (по умолчанию "ОК")
- onPositiveAction - колбэк при нажатии на правую кнопку
- negativeBtnTitle - текст левой кнопки (по умолчаннию null - в этом случаи не отображается)
- onNegativeAction - колбэк при нажатии на левую кнопку,
- dialogLayout - id кастомного layout (по умолчанию R.layout.dialog_alert)
ComposableAlertDialog - служит для демонстрации AlertDialog с использованием Jetpack Compose, необходимо вызвать метод ShowAlertDialog, который
в качестве агруметов может принимать:
- isDialogOpen - индикатор состояния диалога
- title - Заголовок диалога
- message - дополнительное сообщение
- positiveButtonText - текст правой кнопки
- onPositiveAction - колбэк при нажатии на правую кнопку
- negativeBtnTitle - текст левой кнопки (по умолчаннию null - в этом случаи не отображается)
- onNegativeAction - колбэк при нажатии на левую кнопку,
Кастомизация Compose версии происходит по средствам инициализации полей: customTitle, customMessage, customConfirmBtn, customNegativeBtn
Примеры
View версия (ViewableAlertDialog) ok/cancel диалога:
alertDialogManager.showAlertDialog(
activity,
title = "Ой, что-то пошло не так",
message = "Попробуйте ещё раз",
positiveButtonText = "Ещё раз",
onPositiveAction = { retryConnection() },
negativeBtnTitle = "Отмена"
)
View версия (ViewableAlertDialog) ok диалога:
alertDialogManager.showOkDialog(
dialog?.window?.decorView?.context ?: throw Exception(),
title = "Необходимо изменить настройки",
okButtonText = "Ок",
onOkAction = {
viewModel.dispatchAction(ItemAction.ChangeSettings)
}
)
Для катомизации стилей элементов в дефолтной разметке диалога необходимо создать стиль - наследника от ThemeOverlay.MaterialComponents.MaterialAlertDialog и переопределить стили:
- materialAlertDialogTitleTextStyle - стиль для заголока (наследник от
MaterialAlertDialog.MaterialComponents.Title.Text) - materialAlertDialogBodyTextStyle - стиль для подзаголовка (наследник от
MaterialAlertDialog.MaterialComponents.Body.Text) - buttonBarPositiveButtonStyle - стиль для позитивной кнопки (наследник от
Widget.MaterialComponents.Button.TextButton.Dialog) - buttonBarNegativeButtonStyle - стиль для негативной кнопки (наследник от
Widget.MaterialComponents.Button.TextButton.Dialog)
Compose версия (ComposableAlertDialog):
val isDialogOpen = remember { mutableStateOf(false)}
....
//Создание диалога
ComposableAlertDialog
.apply { customTitle = { Text(text = "Ой, что-то пошло не так", color = Color.Blue) } }
.ShowAlertDialog(isDialogOpen, message = "Проблемы с сетью", positiveButtonText = "ОК")
....
//Отображение диалога
isDialogOpen.value = true