日期显示和选择类库,可以用来选择一段连续
的和多个不连续
的日期,具体的UI完全抽象出来了,可以高度自定义(GITHUB地址)
支持的功能:
- 选择一段
连续
的和多个不连续
的日期 - 提供了两个工具类(SingleMonthSelector、CalendarSelector)用来处理单个月和多个连续月日期的选择
- 可以拦截选择事件,当选择的日期长度有限制或某些特殊的日期不可以选择时,可以中断这次选择事件
- SingleMonthSelector、CalendarSelector两个工具类都支持状态保存,可以restore之前的状态
- UI显示可以非常灵活的进行自定义,可以为每个月中的天指定不同的layout,还可以为每月的行和列(6行7列)指定不同的装饰器
- 一个礼拜的第一天并不完全一致,现在支持(
SUNDAY
、SATURDAY
、MONDAY
)三种 - 为了在layout的时候能实时的查看具体的显示样式,所以提供了
editor mode
支持,在开发调试的时候还是比较方便的 - 支持API+8以上版本
长这个样子
如何使用
在Gradle文件中加入依赖
compile 'com.tubb.calendarselector.library:calendar-selector:0.1.1'
使用MonthView来显示月,这个是我们的自定义View,主要工作是组合显示某个月的天数
<com.tubb.calendarselector.library.MonthView
android:id="@+id/ssMv"
android:layout_width="match_parent"
android:layout_height="300dp"
sc:sc_firstday_week="sunday"
sc:sc_draw_monthday_only="false"
sc:sc_month="2016-3"/>
为了方便,我们提供两个工具类来进行日期的选择功能,SingleMonthSelector用来进行单个月的选择,CalendarSelector用来进行多个连续月的选择,
我们也为这两个工具类提供了状态保持的功能,为了在必要的时候进行状态的恢复,给用户更好一点的体验,具体使用可以查看StateSavedActivity
singleMonthSelector.bind(monthView);
使用CalendarSelector (这里有点要注意的是:还不支持ListView
,针对这种情况直接使用RecyclerView
好了)
calendarSelector.bind(containerViewGroup, monthView, itemPosition);
我们为这两个日期