private fun showDialog(title: String) {
val dialog = Dialog(activity)
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE)
dialog.setCancelable(false)
dialog.setContentView(R.layout.custom_layout)
val body = dialog.findViewById(R.id.body) as TextView
body.text = title
val yesBtn = dialog.findViewById(R.id.yesBtn) as Button
val noBtn = dialog.findViewById(R.id.noBtn) as Button
yesBtn.setOnClickListener {
dialog.dismiss()
}
noBtn.setOnClickListener {
dialog.dismiss()
}
dialog.show()
}
fun Context.showDialog(
title: String,
description: String,
titleOfPositiveButton: String? = null,
titleOfNegativeButton: String? = null,
positiveButtonFunction: (() -> Unit)? = null,
negativeButtonFunction: (() -> Unit)? = null
) {
val dialog = Dialog(this, R.style.Theme_Dialog)
dialog.window?.requestFeature(Window.FEATURE_NO_TITLE) // if you have blue line on top of your dialog, you need use this code
dialog.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
dialog.setCancelable(false)
dialog.setContentView(R.layout.dialog_custom_layout)
val dialogTitle = dialog.findViewById(R.id.title) as TextView
val dialogDescription = dialog.findViewById(R.id.description) as TextView
val dialogPositiveButton = dialog.findViewById(R.id.positiveButton) as TextView
val dialogNegativeButton = dialog.findViewById(R.id.negativeButton) as TextView
dialogTitle.text = title
dialogDescription.text = description
titleOfPositiveButton?.let { dialogPositiveButton.text = it } ?: dialogPositiveButton.makeGone()
titleOfNegativeButton?.let { dialogNegativeButton.text = it } ?: dialogNegativeButton.makeGone()
dialogPositiveButton.setOnClickListener {
positiveButtonFunction?.invoke()
dialog.dismiss()
}
dialogNegativeButton.setOnClickListener {
negativeButtonFunction?.invoke()
dialog.dismiss()
}
dialog.show()
}
这是一个使用这个函数的例子
requireContext().showDialog(
title = "Your Title",
description = "Your Description",
titleOfPositiveButton = "yes",
titleOfNegativeButton = "No",
positiveButtonFunction = { // Run codes after click on positive button },
negativeButtonFunction = { // Run codes after click on negative button }
)
9条答案
按热度按时间mgdq6dx11#
你可以使用下面的代码自定义对话框.这是我的工作代码.
8yoxcaq72#
custom_dialog.xml
CustomDialogClass.kt
myss37ts3#
下面我的解决方案作为一种“消息框”。我还没有实现一个“确定”按钮。消息框应该关闭后,点击它。
这里的布局元素(*/layout/message_box.xml)
这个函数我是在一个Fragment类中实现的,它是用Kotlin编写的。
f0ofjuux4#
你在Kotlin中有一个上下文扩展函数的干净代码,并在你所有的代码中使用它
这是一个使用这个函数的例子
并且你需要在对话框的设计中有常量的样式
sgtfey8w5#
这是您可以使用自定义布局创建自己的对话框的方法。
tkqqtvp16#
效果很好。你也可以按你想要的方式自定义。
kb5ga3dv7#
我的自定义对话框xml文件:
我的Kotlin密码:
wsxa1bj18#
如果有人想在对话框(通用解决方案)Kotlin上显示2个按钮
对话框监听器与2个方法onNegativeClick()和onPositiveClick()连接
ego6inou9#
我创建了这个Kotlin类:
您必须在其中定义:
1-布局
<dialog_one>
包括正片按钮、负片按钮、图像视图、文本视图2-动画
<bounce>
,如果您想添加动画到标题图像目前在活动中: