📅  最后修改于: 2023-12-03 15:23:56.173000             🧑  作者: Mango
在 Android 应用中,需要询问用户是否进行某些操作时,可以使用对话框来展示这些选项。Android 中自带了很多对话框,比如提示对话框、单选对话框、多选对话框等等。但是,有时候我们需要自定义一些对话框,例如自定义是否对话框,那么该如何实现呢?
本文将会介绍如何使用 Kotlin 在 Android 中创建自定义是否对话框。
首先,需要确保已经安装了 Android Studio,并且已经设置好了 Kotlin 的环境。
首先,我们需要创建一个布局文件,用于展示是否对话框的布局内容。在 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>
现在,我们已经编写了用于展示对话框内容的布局文件。接下来,我们需要提供一个类,用于创建自定义对话框。
在 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()
方法:用于关闭对话框。现在,我们已经编写了用于创建自定义对话框的类。接下来,我们需要在程序中使用它。
在想要使用自定义对话框的 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 中创建自定义是否对话框。通过创建一个布局文件和一个自定义对话框的类,我们可以在程序中轻松地创建自定义对话框,并展示出来。