lmw
2024-07-09 b13afc751dbbce24753d008f1f87d2c5e133a4ad
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
package com.dollearn.student.dialog
 
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 androidx.fragment.app.DialogFragment
import cn.sinata.xldutils.gone
import cn.sinata.xldutils.utils.screenWidth
import cn.sinata.xldutils.visible
import com.dollearn.student.R
import kotlinx.android.synthetic.main.dialog_tip.*
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)
 
    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.4).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()
            tv_alert.text = ok
        }
 
        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
    }
}