|
|
||
|---|---|---|
| .. | ||
| src/main | ||
| .gitignore | ||
| README.md | ||
| build.gradle | ||
README.md
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(
context = activity,
title = "Ой, что-то пошло не так",
message = "Попробуйте ещё раз",
positiveButtonText = "Ещё раз",
onPositiveAction = { retryConnection() },
negativeBtnTitle = "Отмена"
)
View версия (ViewableAlertDialog) ok диалога:
alertDialogManager.showOkDialog(
context = 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