因为项目中需要日历控件,作为一个懒惰的代码搬运工第一反应当然是去GitHub找,不过找到好看又好用的当然还是要拿出来和大家分享的,希望不要得到鄙视的目光。老规矩先上效果图。

calendarView.gif
作为一个简单的代码搬运工我的反应是这样的

666.gif
是这样的:

6+++.gif
-
好了言归正传,代码地址Material-CalendarView
-
需要直接下载demo并运行的同学请注意因为demo中gradle插件版本过低因此需要将build.gradle中的(替换成高版本即可)
classpath 'com.android.tools.build:gradle:2.4.0-alpha7'
替换成
classpath 'com.android.tools.build:gradle:2.2.2'
使用
- 1.添加依赖
compile 'com.prolificinteractive:material-calendarview:1.4.3'
- 2.布局中引用
<com.prolificinteractive.materialcalendarview.MaterialCalendarView xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/calendarView" android:layout_width="match_parent" android:layout_height="wrap_content" app:mcv_showOtherDates="all" app:mcv_selectionColor="#00F" />
-
3.实现监听日期改变的接口和方法已得到我们选择的日期
@Override public void onDateSelected(@NonNull MaterialCalendarView widget, @Nullable CalendarDay date, boolean selected) { textView.setText(getSelectedDatesString()); } @Override public void onMonthChanged(MaterialCalendarView widget, CalendarDay date) { //noinspection ConstantConditions getSupportActionBar().setTitle(FORMATTER.format(date.getDate())); } private String getSelectedDatesString() { CalendarDay date = widget.getSelectedDate(); if (date == null) { return "No Selection"; } return FORMATTER.format(date.getDate()); }
个性化功能定制-结合demo说明
-
1.常用方法说明
mcv.state().edit() .setFirstDayOfWeek(Calendar.WEDNESDAY) .setMinimumDate(CalendarDay.from(2016, 4, 3)) .setMaximumDate(CalendarDay.from(2016, 5, 12)) .setCalendarDisplayMode(CalendarMode.WEEKS) .commit();
-
.setFirstDayOfWeek(Calendar.WEDNESDAY)
设置每周的第一天为周几,也就是国外常以周日为每周的第一天,国内则是周一,在布局中的表现就是图中标注的地方为周几
-

FirstDayOfWeek.png
-
setMinimumDate(CalendarDay.from(2016, 4, 3))
日历的开始时间 -
.setMaximumDate(CalendarDay.from(2016, 5, 12))
同理日历的结束时间 -
.setCalendarDisplayMode(CalendarMode.WEEKS)
日历的样式可选的有以周的形式和月的形式两种。
2.demo中功能

demo.png
-
Basic Example :最基本的使用选定时期可以用在票务应用之类
-
Calendar With Decorated : 选中日期带有装饰图标的美化
-
Calendar With Dynamic Modes : 设置日历显示样式(周,月)
- Disabled Days Example :可以设置在每个月中有哪些天是不可选定的
-
XML Customization : 属性完全在xml布局中设置
-
Calendar in Dialogs : 在对话框中显示

Disabled_红色日期为不可选.png
暗尘随码去 明月逐人来

star.gif