在 Kotlin 中,可以通过设置 Dialog 的 setCanceledOnTouchOutside 方法来避免点击弹窗之外的背景而关闭弹窗。您可以在 DialogLifeCycle 的 show 方法中设置这一属性。
fun Context.dialogCustom(layout: Int, style: Int = R.style.dialogCenter, onInit: DialogModel.() -> Unit) = object : DialogLifeCycle(this, style) {
override fun show() {
LayoutInflater.from(this@dialogCustom).inflate(layout, null).let {
setContentView(it)
DialogModel(it, this).onInit()
}
window?.let {
it.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
it.setLayout(resources.displayMetrics.widthPixels - 40.dp, ViewGroup.LayoutParams.WRAP_CONTENT)
}
setCanceledOnTouchOutside(false) // 禁止点击背景关闭弹窗
super.show()
}
}.apply { show() }