📌  相关文章
📜  如何使用 Kotlin 在 Android 中创建自定义是否对话框?(1)

📅  最后修改于: 2023-12-03 15:23:56.173000             🧑  作者: Mango

如何使用 Kotlin 在 Android 中创建自定义是否对话框?

在 Android 应用中,需要询问用户是否进行某些操作时,可以使用对话框来展示这些选项。Android 中自带了很多对话框,比如提示对话框、单选对话框、多选对话框等等。但是,有时候我们需要自定义一些对话框,例如自定义是否对话框,那么该如何实现呢?

本文将会介绍如何使用 Kotlin 在 Android 中创建自定义是否对话框。

前置条件

首先,需要确保已经安装了 Android Studio,并且已经设置好了 Kotlin 的环境。

步骤
1. 创建一个布局文件

首先,我们需要创建一个布局文件,用于展示是否对话框的布局内容。在 res 目录下,创建一个新的布局文件 dialog_custom_confirm.xml,并添加如下布局代码:

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

    <TextView
        android:id="@+id/tv_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="16dp"
        android:textSize="18sp"
        android:textStyle="bold"
        android:textColor="@color/colorBlack"
        android:text="确认要删除这张照片吗?" />

    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="@color/colorGray" />

    <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="horizontal"
        android:paddingTop="8dp"
        android:paddingBottom="8dp">

        <!-- 确定按钮 -->
        <TextView 
            android:id="@+id/tv_ok"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:textSize="16sp"
            android:textColor="@color/colorAccent"
            android:text="确定"
            android:gravity="center" />

        <View 
            android:layout_width="1dp"
            android:layout_height="match_parent"
            android:background="@color/colorGray" />

        <!-- 取消按钮 -->
        <TextView 
            android:id="@+id/tv_cancel"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:textSize="16sp"
            android:textColor="@color/colorAccent"
            android:text="取消"
            android:gravity="center" />

    </LinearLayout>

</LinearLayout>
2. 创建一个自定义对话框

现在,我们已经编写了用于展示对话框内容的布局文件。接下来,我们需要提供一个类,用于创建自定义对话框。

app 目录下,创建一个新的类 CustomConfirmDialog.kt,并添加如下代码:

import android.app.AlertDialog
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import kotlinx.android.synthetic.main.dialog_custom_confirm.*

class CustomConfirmDialog(context: Context) {

    private val dialogView: View =
        LayoutInflater.from(context).inflate(R.layout.dialog_custom_confirm, null)

    private val dialogBuilder: AlertDialog.Builder = AlertDialog.Builder(context)
        .setView(dialogView)

    private val alertDialog: AlertDialog = dialogBuilder.create()

    fun setTitle(title: String): CustomConfirmDialog {
        dialogView.tv_title.text = title
        return this
    }

    fun setPositiveButton(text: String, clickListener: View.OnClickListener): CustomConfirmDialog {
        dialogView.tv_ok.text = text
        dialogView.tv_ok.setOnClickListener(clickListener)
        return this
    }

    fun setNegativeButton(text: String, clickListener: View.OnClickListener): CustomConfirmDialog {
        dialogView.tv_cancel.text = text
        dialogView.tv_cancel.setOnClickListener(clickListener)
        return this
    }

    fun show() {
        alertDialog.show()
    }

    fun dismiss() {
        alertDialog.dismiss()
    }

}

CustomConfirmDialog 类中,我们先创建了布局文件对象 dialogView 以及 AlertDialog.Builder 对象 dialogBuilder。然后,通过 setView() 方法将布局文件对象设置为对话框的内容视图。最后,通过 AlertDialog.Builder 对象的 create() 方法创建了一个 AlertDialog 对象。

CustomConfirmDialog 类中,我们提供了以下几个方法以供调用:

  • setTitle() 方法:用于设置对话框的标题文字。
  • setPositiveButton() 方法:用于设置对话框的确定按钮的显示文字以及点击事件。
  • setNegativeButton() 方法:用于设置对话框的取消按钮的显示文字以及点击事件。
  • show() 方法:用于显示对话框。
  • dismiss() 方法:用于关闭对话框。
3. 在程序中使用自定义对话框

现在,我们已经编写了用于创建自定义对话框的类。接下来,我们需要在程序中使用它。

在想要使用自定义对话框的 Activity 中,首先需要创建一个实例对象。然后,调用相关方法设置对话框的标题、确定按钮文字以及点击事件、取消按钮文字以及点击事件。最后,调用 show() 方法展示对话框。

下面是一个示例:

import android.os.Bundle
import android.view.View
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {

    private lateinit var customConfirmDialog: CustomConfirmDialog

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

        // 创建 CustomConfirmDialog 对象
        customConfirmDialog = CustomConfirmDialog(this)
    }

    fun onShowDialogClicked(view: View) {
        customConfirmDialog
            .setTitle("确认要删除这张照片吗?")
            .setPositiveButton("确定", View.OnClickListener {
                // 执行确定按钮的点击事件
                customConfirmDialog.dismiss()
            })
            .setNegativeButton("取消", View.OnClickListener {
                // 执行取消按钮的点击事件
                customConfirmDialog.dismiss()
            })
            .show()
    }

}

在上面的代码中,我们首先在 MainActivity 类中创建了一个 CustomConfirmDialog 对象 customConfirmDialog。当用户点击 onShowDialogClicked() 方法时,我们通过调用 setTitle() 方法设置了对话框的标题文字,通过调用 setPositiveButton() 方法设置了对话框的确定按钮的文字和点击事件,通过调用 setNegativeButton() 方法设置了对话框的取消按钮的文字和点击事件。最后,我们通过调用 show() 方法展示了对话框。

结论

在本文中,我们介绍了如何使用 Kotlin 在 Android 中创建自定义是否对话框。通过创建一个布局文件和一个自定义对话框的类,我们可以在程序中轻松地创建自定义对话框,并展示出来。