Настраиваемое диалоговое оповещение - PullRequest
0 голосов
/ 21 января 2020

Я пытаюсь сделать пользовательское диалоговое оповещение, как показано на рисунке; Я пытался и искал везде, чтобы это выглядело как фотография, но ничего не работает. Любая помощь будет оценена; Первая картинка показывает, что я хочу сделать, а вторая - как это выглядит в настоящее время:

enter image description here

enter image description here

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val alert = AlertDialog.Builder(this@MainActivity)

        alert.setTitle("Confirm delete")
        alert.setMessage("Lorem ipsum dolor sit amet, consectetuer adipiscing elit.")

        alert.setPositiveButton("DELETE"){dialog, which ->
            Toast.makeText(applicationContext,"Ok, we change the app background.",Toast.LENGTH_SHORT).show()

        }

            alert.setNegativeButton("CANCEL"){dialog,which ->
            Toast.makeText(applicationContext,"You are not agree.",Toast.LENGTH_SHORT).show()
        }

        val dialog: AlertDialog = alert.create()

        dialog.show()
    }
}

Ответы [ 3 ]

2 голосов
/ 21 января 2020

Тема Alert.Dialog зависит от уровня API вашего устройства. На первом рисунке вид Android KitKat (API 19 - 20) , на втором рисунке - шаблон проектирования материалов (API> 20) .

Если вы хотите диалоговое окно, подобное первому изображению, вам может потребоваться создать пользовательский макет

happy_coding

0 голосов
/ 21 января 2020

Это потому, что ваш диалог отображается с использованием темы материала. Вы можете использовать приведенный ниже код, чтобы получить требуемый результат, применяя стиль к AlertDialog.

val alert = AlertDialog.Builder(this@MainActivity,AlertDialog.THEME_HOLO_LIGHT)

Примечание. Этот стиль устарел.

0 голосов
/ 21 января 2020

1.Создание Kotlin класса для диалога

class CustomDialog(
    context: Context,val mCallBack: CallBack
) : Dialog(context, R.style.full_screen_dialog) {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.dialog_custom)
        // YOUR COMPONENT HANDLE HERE
    // FOR EXAMPLE
        btn_yes.setOnClickListener {
              mCallBack.onDone()
              dismiss()
        }
        btn_cancel.setOnClickListener {
            dismiss()
        }
    }


    interface CallBack {
        //YOU CAN HANDLE THIS METHOD IN YOUR CALLING ACTIVITY
        fun onDone(rating: Float, comments: String)
    }

}

2.Как позвонить

 var mDialog: CustomDialog = CustomDialog(
            this,
            object : CustomDialog.CallBack {
                override fun onDone() {

                }
            })
        mDialog.show()

3. стили. xml

<style name="full_screen_dialog">
        <item name="android:windowFrame">@null</item>
        <item name="android:windowIsFloating">false</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
        <item name="android:background">@android:color/transparent</item>
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="colorAccent">@color/transparent</item>
    </style>

Создайте свой собственный файл макета и установите его на setContentView(R.layout.dialog_custom), как я здесь не упоминал

...