Android自定义Dialog弹窗

核心思想就是通过Dialog的构造函数来创建Dialog,然后给Dialog设置自定义布局

fun showAlertDialog(context: Context, title: String, message: CharSequence, positive: String, negative: String, cmListener: ConfirmListener?, clListener: CancelListener?): Dialog {

        val dialog = Dialog(context, R.style.KfDialog)

        val contentView = LayoutInflater.from(context).inflate(R.layout.kf_dialog, null)
        val contentTv = contentView.findViewById<TextView>(R.id.dialog_content)
        val titleTv = contentView.findViewById<TextView>(R.id.dialog_title)
        val negativeTv = contentView.findViewById<TextView>(R.id.dialog_negative)
        val positiveTv = contentView.findViewById<TextView>(R.id.dialog_positive)

        contentTv.text = message
        titleTv.text = title
        negativeTv.text = negative
        positiveTv.text = positive

        negativeTv.setOnClickListener {
            clListener?.onCancel()
            dialog.dismiss()
        }

        positiveTv.setOnClickListener {
            cmListener?.onConfirm()
            dialog.dismiss()
        }
        dialog.setCancelable(false)
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE)
        dialog.setContentView(contentView)
        dialog.show()
        return dialog
    }

其中style是Dialog弹窗的样式,在styles.xml里面定义,比如:

<style name = "KfDialog" parent = "Theme.AppCompat.Light.Dialog.Alert" >
        <item name = "android:textSize" >17sp</item >
        <item name = "android:textColor" >#000</item >
    </style >

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值