Диалоговое окно Android с положительным / отрицательным значением и галочкой

#android

#Android

Вопрос:

Пытаюсь найти способ создать диалоговое окно оповещения, используя либо встроенную в Android, либо стороннюю библиотеку, которая позволяет мне создавать диалоговое окно оповещения с заголовком, описанием, 2 пользовательскими ответами (вариант A, вариант B) и флажок «не показывать это снова».

Я не вижу, чтобы иметь возможность делать все эти вещи, я могу делать их по-разному, но не все одновременно. Даже множество пользовательских диалоговых окон с предупреждениями, похоже, не могут этого сделать. У меня может быть текст и флажок, но только положительный ответ. Я проверил несколько, и все они кажутся ограниченными одинаково.

Возможно ли это?

Спасибо

Комментарии:

1. Взгляните на это руководство по диалогам: создание пользовательского макета

2. Спасибо, похоже, это решение.

Ответ №1:

Чтобы объединить текстовое сообщение и флажок, вы должны использовать пользовательский макет диалога.

Создайте новый файл ресурсов макета dialog_content.xml

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingStart="16dp"
    android:paddingEnd="16dp">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingTop="16dp"
        android:paddingBottom="8dp"
        android:paddingStart="8dp"
        android:paddingEnd="8dp"
        android:text="@string/dialog_message" />

    <CheckBox
        android:id="@ id/dialog_content_check_box"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/do_not_show_again" />
</LinearLayout>
 

Используйте этот макет для создания диалогового окна оповещения в вашем действии / фрагменте

 val dialogContentView = layoutInflater.inflate(R.layout.dialog_content, null)
val checkBox = dialogContentView.findViewById<CheckBox>(R.id.dialog_content_check_box)
checkBox.setOnCheckedChangeListener { buttonView, isChecked ->
    if (isChecked) {
        // CheckBox is checked
    } else {
        // CheckBox is unchecked
    }
}

AlertDialog.Builder(context)
    .setTitle(R.string.dialog_title)
    .setView(dialogContentView)
    .setNegativeButton(R.string.reject) { dialog, which ->
        // Negative button clicked
    }
    .setPositiveButton(R.string.accept) { dialog, which ->
        // Positive button clicked
    }
    .show()