在App应用开发中有很多时候我们都需要用到日期选择,比如出行日期,日期备忘录等,也有专门针对日历开发的App,今天这里就是一个基于RecyclerView实现的高效率日历控件。
1.创建一个activity_calendar.xml布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:calendar="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:background="@color/white"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.andexert.calendarlistview.library.DayPickerView
android:id="@+id/day_picker"
android:layout_width="match_parent"
android:layout_height="wrap_content"
calendar:colorSelectedDayBackground="@color/color_48c4fe"
calendar:colorNormalDay="@android:color/black"
calendar:colorMonthName="@android:color/black"
calendar:colorDayName="@android:color/black"
calendar:textSizeDay="14sp"
calendar:textSizeMonth="14sp"
calendar:textSizeDayName="14sp"
calendar:currentDaySelected="false"
calendar:colorPreviousDay="@android:color/darker_gray"
calendar:enablePreviousDay="false"
calendar:selectedDayRadius="18dp"
calendar:showMonthDay="false"
calendar:selectSingle="true"
calendar:drawRoundRect="false"/>
</LinearLayout>
DayPickerView的属性说明:
- colorSelectedDayBackground:选中日期的背景颜色
- calendar:colorNormalDay:未选中的日期字体颜色
- colorMonthName:周的字体颜色(一,二...)
- textSizeDay:数字日的字体大小(1,2,3号...)
- textSizeMonth:年月的字体大小(2017年1月)
- textSizeDayName:周的字体大小(一,二,三...)
- currentDaySelected:是否默认选中当前日期(今天)
- colorPreviousDay:最小日期之前的日期颜色(灰色日期)
- enablePreviousDay:最小日期之前的日期是否可选(灰色日期)
- drawRoundRect:选中日期的背景样式,圆形或者方形
- selectedDayRadius:选中日期背景的圆角大小
- headerMonthHeight:年月以及周的空间高度
- calendarHeight :日期空间的高度
------------我是加强部分-------------- - <b>showMonthDay</b>是否显示周(一,二,三...)
- <b>selectSingle</b>当前是多选模式还是单选模式
2.代码使用部分
设置最小的可选日期
mDayPickerView.setMinDay(calendar);
设置最大日期需要实现接口DatePickerController,按照年计算,可选部分直到设置年份的今天
单选逻辑实现方法
多选逻辑实现
删除选择的日期
mDayPickerView.getSelectedDays().setFirst(null);
mDayPickerView.getSelectedDays().setLast(null);
//刷新日历
mDayPickerView.setUpAdapter();
如果需要了解这个日历的前身,请点击我,说了这么多,没有源码就是耍流氓
源码传送门
日历后期将会根据研究持续更新,如果你喜欢,那就一起来研究吧,后期我将会给大家带来更多实用,可靠并且拓展性强大的控件。