美文网首页晚期代码癌患者android杂记安卓View学习
Android RecyclerView日期选择控件进化版

Android RecyclerView日期选择控件进化版

作者: Galaxy北爱 | 来源:发表于2016-12-21 10:46 被阅读2487次

在App应用开发中有很多时候我们都需要用到日期选择,比如出行日期,日期备忘录等,也有专门针对日历开发的App,今天这里就是一个基于RecyclerView实现的高效率日历控件。

device-2016-12-21-095818.png

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,按照年计算,可选部分直到设置年份的今天
Paste_Image.png
单选逻辑实现方法
Paste_Image.png
多选逻辑实现
Paste_Image.png device-2016-12-21-091705.png
删除选择的日期
mDayPickerView.getSelectedDays().setFirst(null);
mDayPickerView.getSelectedDays().setLast(null);
//刷新日历
mDayPickerView.setUpAdapter();
calendar.gif

如果需要了解这个日历的前身,请点击我,说了这么多,没有源码就是耍流氓
源码传送门
日历后期将会根据研究持续更新,如果你喜欢,那就一起来研究吧,后期我将会给大家带来更多实用,可靠并且拓展性强大的控件。

相关文章

网友评论

  • 02cc6a7d0a82:这个实现了每个日期数字下面加内容没有
    Galaxy北爱:没有,这只是一个存粹的日历,源码开发性学习
  • 我叫小酷啊:@Galaxy北爱 大神,谢谢啊,我改掉啦,有个属性改掉了就好了
  • 我叫小酷啊:大神,为什么setMinDay这个方法设置最小可选日期没效果,我想写一个万年历,就是所有时间都是可选的,现在有个问题就是当月日期,例如今天11月7号,然后11月1号到6好就是不可选的,为什么呢?
    我叫小酷啊:@Galaxy北爱 不是啊,就是可选天数,比如今天11月8号,但是11月1号到7号我就选不了,我现在改掉了那个判断,可以选中了,但是还是没有背景色,只有大于当前时间的天数才会有背景色
    Galaxy北爱:setMinDay是精准到可选天数,你的意思是要精准到月份?
    我叫小酷啊:大神还会持续更新吗?你写的这个功能很实用,就是自己太菜不会写
  • 570d48998c6c:怎样把你里面的2017年9月修改样式和只显示一个周期 不要每个月都显示一次
  • Yera丶:很赞,能不能加个多选功能呢?
    Galaxy北爱: @旧时光丶_9ad5 没有呢,实现原理和选择个一样,需要做一下集合判断即可。
    Yera丶:@Galaxy北爱 现在的项目里有吗?
    Galaxy北爱: @旧时光丶_9ad5 选择多个日期?当然也可以
  • fa16e00eeb9c:很好,很强大,收藏了,
  • 0599beed3c0c:额,下载后导入as报错额
    Error:Failed to crunch file C:\Users\Administrator\Desktop\CalendarListEvolution-master\CalendarListEvolution-master\calendarlist\build\intermediates\exploded-aar\com.android.support\appcompat-v7\24.2.1\res\drawable-hdpi-v4\abc_textfield_search_default_mtrl_alpha.9.png into C:\Users\Administrator\Desktop\CalendarListEvolution-master\CalendarListEvolution-master\calendarlist\build\intermediates\res\merged\androidTest\debug\drawable-hdpi-v4\abc_textfield_search_default_mtrl_alpha.9.png
    Galaxy北爱:@itzhy 你的sdk配置
  • Believe_:你好,我想请问一下怎么去掉年月和日-六所占的空间,我现在把你画某年某月还有日到六给去掉了,但是还是占有空白的空间在那里?是去掉行么,求解,谢谢
    Believe_: @Galaxy北爱 早解决,忘记回复了
    Galaxy北爱:@Believe_ SimpleMonthView中drawMonthDayLabels方法就是计算日-六所占空间
    Galaxy北爱:要去掉那个?如果 需要隐藏那个空间,有个高度计算,去掉就行了
  • 晓峰残月:以收入专题,欢迎关注
    Galaxy北爱:@晓峰残月 :+1:
  • Jlanglang:就一个二级结构的recycleview。感觉不怎么实用,还不如原生的那个。
  • ziabo_yu:虽然有点儿丑,功能性也不强,但是我还是写不出来的
    ziabo_yu:@Galaxy北爱 嗯嗯
    Galaxy北爱:@ziabo_yu 主要看看原理,UI啥的,根据自己设计需求去改嘛

本文标题:Android RecyclerView日期选择控件进化版

本文链接:https://www.haomeiwen.com/subject/ortqvttx.html