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
package cn.sinata.xldutils.activity
 
import android.annotation.SuppressLint
import android.graphics.Color
import android.os.Build
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.widget.MDatePicker
import org.jetbrains.anko.support.v4.find
 
/**
 * 日期选择
 */
@SuppressLint("ValidFragment")
class DatePickDialog(val min: Long = 0, val max: Long = 0) : DialogFragment() {
 
    private val datePicker by lazy {
        find<MDatePicker>(R.id.mDatePicker)
    }
 
    private val cancelView by lazy {
        find<TextView>(R.id.action_cancel)
    }
 
    private val sureView by lazy {
        find<TextView>(R.id.action_sure)
    }
 
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setStyle(DialogFragment.STYLE_NO_FRAME, R.style.Dialog)
    }
 
    override fun onActivityCreated(savedInstanceState: Bundle?) {
        super.onActivityCreated(savedInstanceState)
        dialog?.window?.setGravity(Gravity.BOTTOM)
        dialog?.setCanceledOnTouchOutside(true)
    }
 
    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? =
            inflater.inflate(R.layout.activity_date_pick_dialog, container, false)
 
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
 
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
            if (max > 0) {
                datePicker.maxDate = max
            }
            if (min > 0) {
                datePicker.minDate = min
            }
        }
 
        datePicker.setDividerColor(Color.TRANSPARENT)
        datePicker.setPickerMargin(0)
        datePicker.setTextSize(16f)
        cancelView.setOnClickListener {
            dismissAllowingStateLoss()
        }
 
        sureView.setOnClickListener {
            onDateSetListener?.onSet(datePicker.year, datePicker.month + 1, datePicker.dayOfMonth)
            dismissAllowingStateLoss()
        }
    }
 
    fun setOnDateSetListener(listener: OnDateSetListener?) {
        this.onDateSetListener = listener
    }
 
    fun setOnDateSetListener(listener: (year: Int, month: Int, day: Int) -> Unit) {
        this.onDateSetListener = object : OnDateSetListener {
            override fun onSet(year: Int, month: Int, day: Int) {
                listener(year, month, day)
            }
        }
    }
 
    private var onDateSetListener: OnDateSetListener? = null
 
    interface OnDateSetListener {
        fun onSet(year: Int, month: Int, day: Int)
    }
 
 
}