自定义日历日期范围滑动选择Android

Sac*_*n K 4 android calendar android-calendar

我需要设计一个自定义日历来选择日期在此处输入图片说明刷他们。我需要一些有关如何在日历上实现滑动的解决方案,如果有任何支持此功能的库,也将有所帮助。

任何类型的帮助都将被考虑。谢谢!刷卡日期界面图片如图

Har*_*ara 7

使用 Android 的默认材质组件,您可以使用新的 MaterialDatePicker。您可以在其中获得单个日期选择以及日期范围选择。

将以下内容添加到您的 build.gradle

implementation 'com.google.android.material:material:1.2.0 alpha02'
Run Code Online (Sandbox Code Playgroud)

调用下面的方法来打开日期范围选择器

private fun setupRangePickerDialog() {
    val builder:MaterialDatePicker.Builder<*> =MaterialDatePicker.Builder.dateRangePicker()
    val constraintsBuilder = CalendarConstraints.Builder()
    try {
        builder.setCalendarConstraints(constraintsBuilder.build())
        val picker:MaterialDatePicker<*> =builder.build()
        getDateRange(picker)
        picker.show(supportFragmentManager, picker.toString())
    } catch (e:IllegalArgumentException){
    }
}
Run Code Online (Sandbox Code Playgroud)

现在把下面的方法用于获取开始和结束日期

private fun getDateRange(materialCalendarPicker:MaterialDatePicker<out Any>) {
    materialCalendarPicker.addOnPositiveButtonClickListener({
            selection:Any ? ->
    Log.e("DateRangeText", materialCalendarPicker.headerText)
            })
    materialCalendarPicker.addOnNegativeButtonClickListener({
            dialog:View ? ->
            })
    materialCalendarPicker.addOnCancelListener({
            dialog:DialogInterface ? ->
            })
}
Run Code Online (Sandbox Code Playgroud)

恭喜,你完成了!


Sac*_*n K 6

由于有很多付费日历,因此我开发了一个开源的未付费日历,可用于在滑动日期时选择日期。看起来像这样在此处输入图片说明

请参阅SwipeDateCalendar的源代码

也可以根据要求进行进一步修改。