RoboSwag/alerts
AnastasiyaK97 dc0c902e83 fix detekt 2022-09-16 11:41:07 +03:00
..
src/main fix detekt 2022-09-16 11:41:07 +03:00
.gitignore Add alerts module 2022-08-10 12:18:46 +07:00
README.md Update README.md 2022-09-15 19:31:59 +03:00
build.gradle small fixes and add styles 2022-08-30 16:10:53 +03:00

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