lmw
2025-04-24 718f31c92e2029d05260810435a2c70cef6e6ce5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
package cn.sinata.xldutils.widget
 
import android.content.DialogInterface
import android.os.Bundle
import android.view.Gravity
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.fragment.app.DialogFragment
import cn.sinata.xldutils.R
import cn.sinata.xldutils.gone
import cn.sinata.xldutils.utils.screenWidth
import cn.sinata.xldutils.visible
import org.jetbrains.anko.support.v4.find
import org.jetbrains.anko.wrapContent
 
class TipDialog: DialogFragment() {
    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? =
            inflater.inflate(R.layout.dialog_tip,container,false)
 
    private val tv_cancel by lazy { find<TextView>(R.id.tv_cancel) }
    private val tv_ok by lazy { find<TextView>(R.id.tv_ok) }
    private val tv_alert by lazy { find<TextView>(R.id.tv_alert) }
    private val alert_line by lazy { find<View>(R.id.alert_line) }
    private val iv_close by lazy { find<View>(R.id.iv_close) }
    private val tv_msg by lazy { find<TextView>(R.id.tv_msg) }
 
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setStyle(STYLE_NO_FRAME,R.style.FadeDialog)
    }
 
    override fun onActivityCreated(savedInstanceState: Bundle?) {
        super.onActivityCreated(savedInstanceState)
        dialog?.window?.setLayout((screenWidth()*0.85).toInt(), wrapContent)
        dialog?.window?.setGravity(Gravity.CENTER)
        dialog?.setCanceledOnTouchOutside(!isAlert)
    }
 
    private val isAlert by lazy {  //是否仅显示提示信息
        arguments?.getBoolean("isAlert",false)?:false
    }
    private val msg by lazy {  //提示信息
        arguments?.getCharSequence("msg")?:"是否确定取消订单?"
    }
    private val ok by lazy {  //确定文字
        arguments?.getString("ok")?:"确认"
    }
    private val cancel by lazy {  //取消文字
        arguments?.getString("cancel")?:"关闭"
    }
    private var isCancelDismiss = false //点击取消关闭,不走onDismiss回调
 
 
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
 
        if (isAlert){
            tv_cancel.gone()
            tv_ok.gone()
            tv_alert.visible()
            alert_line.visible()
        }
 
        tv_msg.text = msg
        tv_ok.text = ok
        tv_cancel.text = cancel
 
        tv_cancel.setOnClickListener {
            callback?.onCancel()
            isCancelDismiss = true
            dismiss()
        }
 
        tv_ok.setOnClickListener {
            callback?.onOk()
            dismiss()
        }
 
        iv_close.setOnClickListener {
            dismiss()
        }
 
        tv_alert.setOnClickListener {
            dismiss()
        }
    }
 
    override fun onDismiss(dialog: DialogInterface) {
        super.onDismiss(dialog)
        if (!isCancelDismiss&&!isAlert)
            dismissCallbak?.onDismiss()
        else if (isAlert)
            dismissCallbak?.onDismiss()
    }
 
    interface OnClickCallback{
        fun onOk()
        fun onCancel()
    }
    interface OnDismiss{
        fun onDismiss()
    }
    private var callback: OnClickCallback? = null
    private var dismissCallbak: OnDismiss? = null
    fun setCallback(callback: OnClickCallback){
        this.callback = callback
    }
    fun setDismissCallback(callback: OnDismiss){
        this.dismissCallbak = callback
    }
}