用kotlin手写个日期选择器的弹窗
时间: 2024-09-12 16:09:30 浏览: 54
日期选择器:Ko用Kotlin编写的Android自定义响应日期选择器小部件
在Kotlin中手写一个日期选择器的弹窗,通常需要使用Android框架中的Dialog和DatePicker组件。以下是一个简单的例子,展示了如何在Kotlin中创建一个自定义的日期选择器弹窗:
```kotlin
import android.app.Dialog
import android.os.Bundle
import android.widget.DatePicker
import androidx.appcompat.app.AlertDialog
import androidx.fragment.app.DialogFragment
import java.util.*
class DatePickerFragment : DialogFragment() {
interface OnDateSetListener {
fun onDateSet(datePicker: DatePicker, year: Int, month: Int, dayOfMonth: Int)
}
private lateinit var onDateSetListener: OnDateSetListener
fun setOnDateSetListener(listener: OnDateSetListener) {
onDateSetListener = listener
}
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val calendar = Calendar.getInstance()
val year = calendar.get(Calendar.YEAR)
val month = calendar.get(Calendar.MONTH)
val dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH)
val datePicker = DatePicker(requireActivity())
datePicker.init(year, month, dayOfMonth, null)
return AlertDialog.Builder(requireActivity())
.setView(datePicker)
.setPositiveButton("OK") { dialog, which ->
onDateSetListener.onDateSet(datePicker, datePicker.year, datePicker.month, datePicker.dayOfMonth)
}
.setNegativeButton("Cancel") { dialog, which ->
dialog.cancel()
}
.create()
}
}
```
要使用这个`DatePickerFragment`,你需要在你的Activity或Fragment中实现`OnDateSetListener`接口,并在需要的时候调用`show()`方法来显示对话框。例如,在一个Activity中,你可以这样使用它:
```kotlin
class MyActivity : AppCompatActivity(), DatePickerFragment.OnDateSetListener {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
fun showDatePicker(view: View) {
val datePickerFragment = DatePickerFragment()
datePickerFragment.setOnDateSetListener(this)
datePickerFragment.show(supportFragmentManager, "DatePicker")
}
override fun onDateSet(datePicker: DatePicker, year: Int, month: Int, dayOfMonth: Int) {
// 处理日期选择结果
}
}
```
请确保在你的布局文件中有一个按钮或其他控件来触发日期选择器。
阅读全文