插件效果如图所示:

使用:
引入:在build.gradle中添加  implementation 'com.prolificinteractive:material-calendarview:1.4.0';
应用:
(1)所在的activity要
implements CalFragment.OnFrgDataListener
(2)
CalFragment calendarViewFragment= new CalFragment();
calendarViewFragment.show(getSupportFragmentManager(), "timeChoose");
(3)重写CalFragment
public class CalFragment extends DialogFragment implements OnDateSelectedListener {DialogFragment mContext = this;int flag = 0;private View view;MaterialCalendarView mcv;//接收从Activity传来的数据Bundle timeBundle;OnFrgDataListener IListener;public CalFragment() {// Required empty public constructor}@SuppressLint("ValidFragment")public CalFragment(int flag) {this.flag = flag;}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {view = inflater.inflate(R.layout.fragment_cal, container, false);mcv = view.findViewById(R.id.mcv);timeBundle = getArguments();initData();return view;}@Overridepublic void onStart() {super.onStart();//下面这些都是为了让dialog宽度全充满Window win = getDialog().getWindow();// 一定要设置Background,如果不设置,window属性设置无效win.setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.white)));DisplayMetrics dm = new DisplayMetrics();getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);WindowManager.LayoutParams params = win.getAttributes();// 使用ViewGroup.LayoutParams,以便Dialog 宽度充满整个屏幕params.width = ViewGroup.LayoutParams.MATCH_PARENT;params.height = ViewGroup.LayoutParams.WRAP_CONTENT;win.setAttributes(params);/*if (dialog != null) {DisplayMetrics dm = new DisplayMetrics();getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);dialog.getWindow().setLayout((int) (dm.widthPixels * 1), ViewGroup.LayoutParams.WRAP_CONTENT);}*/}@Overridepublic void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);//这个主题 背景全透明 没有半透明// setStyle(DialogFragment.STYLE_NO_FRAME, android.R.style.Theme_Holo_Light);}public void initData() {// 显示兴起补全的整个礼拜的上个月或者下个月的日期 一般会多出一行整个礼拜// 点击补全出来的另外一个月的信息 可以直接跳到那个月mcv.setShowOtherDates(MaterialCalendarView.SHOW_ALL);// 设置日历默认的时间为当前的时间mcv.setSelectedDate(new Date());if(flag == 1 ){Calendar c = Calendar.getInstance();/*取得系统日期:*/int year = c.get(Calendar.YEAR);int month = c.get(Calendar.MONTH);int day = c.get(Calendar.DAY_OF_MONTH);// 日历的主要设置mcv.state().edit()// 设置你的日历 第一天是周一还是周一.setFirstDayOfWeek(Calendar.MONDAY)// 设置你的日历的最小的月份  月份为你设置的最小月份的下个月 比如 你设置最小为1月 其实你只能滑到2月/*.setMinimumDate(CalendarDay.from(2015, 1, 1))*/// 同最小 设置最大.setMaximumDate(CalendarDay.from(year, month, day))// 设置你的日历的模式  是按月 还是按周.setCalendarDisplayMode(CalendarMode.MONTHS).commit();} else {// 日历的主要设置mcv.state().edit()// 设置你的日历 第一天是周一还是周一.setFirstDayOfWeek(Calendar.MONDAY)// 设置你的日历的最小的月份  月份为你设置的最小月份的下个月 比如 你设置最小为1月 其实你只能滑到2月/*.setMinimumDate(CalendarDay.from(2015, 1, 1))*/// 设置你的日历的模式  是按月 还是按周.setCalendarDisplayMode(CalendarMode.MONTHS).commit();}
// 设置你选中日期的背景底色mcv.setSelectionColor(getResources().getColor(R.color.blueBackOfBtn));mcv.setOnDateChangedListener(this);}/*** 日期选择 回调函数** @param widget* @param date* @param selected*/@Overridepublic void onDateSelected(@NonNull MaterialCalendarView widget, @NonNull CalendarDay date, boolean selected) {Toast.makeText(getActivity(), getSelectedDatesString(), Toast.LENGTH_SHORT).show();//       Toast.makeText(getActivity(),"从Activity传递的数据:"+(String)timeBundle.get("date"),Toast.LENGTH_SHORT).show();IListener.progress(mcv.getSelectedDate().getDate());//选择后,延迟消失new Handler().postDelayed(new Runnable() {@Overridepublic void run() {mContext.dismiss();}}, 1000);}/*** 将日期转换为字符串** @return*/private String getSelectedDatesString() {CalendarDay date = mcv.getSelectedDate();if (date == null) {return "No Selection";}Log.i("sinstar", "getSelectedDatesString: " + date.toString());return FORMATTER.format(date.getDate());}private static final DateFormat FORMATTER = SimpleDateFormat.getDateInstance();/*** 定义接口,向Activity传递数据*/public interface OnFrgDataListener {public void progress(Date date);}/*** 注入实例方法** @param*//* public void setOnFrgDataListener(OnFrgDataListener listener){IListener=listener;}*/@Overridepublic void onAttach(Activity activity) {super.onAttach(activity);if (activity instanceof OnFrgDataListener) {IListener = (OnFrgDataListener) activity;} else {throw new IllegalArgumentException("activity must implements OnFrgDataListener");}}@Overridepublic void onDetach() {super.onDetach();IListener = null;}
}

(4)设置日历的最大时间

// 同最小 设置最大.setMaximumDate(CalendarDay.from(year, month, day))
(5)date即为所选时间
 @Overridepublic void progress(Date date) {//每次选择日期后,都会调用这个方法if (date != null) {str = ParseDate.dateParseString(date);query_1.setText(str);}
}

安卓日历插件 calendarview使用相关推荐

  1. 年季度月周日控件html,基于bootstrap按年、季度、年月、年月日的日历插件(原创)...

    插件描述:基于bootstrap按年.季度.年月.年月日的日历插件,作为bootstrapdatetimepicker的扩展 更新时间:2020-07-02 22:02:19 更新说明:修改yk-da ...

  2. 仿iphone日历插件(beta)

    前言 小伙伴们好,很久不见了.最近工作进入正常期了,所以慢慢的悠闲的时间久没有了,所以不能每天水一篇了. 最近也在听师傅(http://home.cnblogs.com/u/aaronjs/)的教导开 ...

  3. jquery日历插件 途牛_jquery日历插件SimpleCalendar

    插件描述:多功能日历插件SimpleCalendar,带农历.节假日. 更新时间:2019-07-30 16:36:32 更新说明:修复显示undefined Simple-Calendar作用方法 ...

  4. 记录-JQuery日历插件My97DatePicker日期范围限制

    对于日期控件,有时会有不能选择今天以前的日期这种需求..... My97DatePicker是一个非常优秀的日历插件,不仅支持多种调用模式,还支持日期范围限制. 常规的调用比较简单,如下所示: 1 & ...

  5. 一款简洁大气的jquery日期日历插件

    本jquery插件名为manhuaDate,暂时只支持jquery 1.9.0以下版本,比如jquery-1.8.3.min.js 查看效果网址: http://keleyi.com/a/bjad/e ...

  6. jQuery插件实战之fullcalendar(日历插件)Demo

    jQuery的插件许多,应用的场景也很丰富,今天我这里给大家介绍一款很有用的日历页面开发插件 - fullcalendar,眼下最新版本号是1.5.1,使用这款插件可以高速帮助你高速编程实现基于web ...

  7. fullcalendar v5.3.2 日历插件+LayerUi弹窗,实现自定义HTML表格

    fullcalendar官网:https://fullcalendar.io/ 插件下载地址(v5.3.2版本):https://github.com/fullcalendar/fullcalenda ...

  8. html中字段是日期控件,jQuery日历插件datepicker用法详解

    jQuery是一款不可多得的非常优秀的javascript脚本开发库,而基于其上的很多插件也是非常规范和卓越的,如果错过这番美景真是太可惜了,比如datepicker这个插件. 一般MIS系统的前端, ...

  9. javascript日历插件

    javascript日历插件 原文:javascript日历插件 javascript日历插件 最近在尝试着写javascript日历插件,所以也到github上看国外人日历源码,或者国内人写的好点的 ...

最新文章

  1. php e all e notic,error_reporting(E_ALL ^ E_NOTICE)详细说明 | 慢生活的记忆
  2. Lambda表达式的基础知识
  3. RUNOOB python练习题 23 使用*号输出菱形
  4. 达梦工作笔记-达梦客户端,执行命令后要保存退出,才生效
  5. java 调制信号,常见调制技术汇总
  6. jeesit1.27使用(2)-图片处理
  7. Android11.0系统去掉桌面谷歌搜索栏
  8. extmail mysql数据库 重启_linux下安装和配置extmail
  9. 2017年蓝桥杯软件B组省赛试题
  10. 人与人,人与自然。文/江湖一剑客
  11. 孙子兵法--你如何来做好事情
  12. Web指纹识别技术研究与优化实现(CMS)
  13. 支付宝微信在刷脸支付领域两强争霸
  14. 实用的19条android平台设计规范
  15. 支付宝/微信手机网站支付总结
  16. 全屏Dialog的几种实现
  17. linux 限速命令,Linux路由器限速设置进程
  18. 为什么在ROS中启动小乌龟后,无法用键盘控制?
  19. JAVA课程分为几部分_语文课程目标体系可以分为几个学段?
  20. 记我拿到一台MAC电脑后的学习研究心得

热门文章

  1. tensorrt,mmclas中的onnx转tensorrt
  2. 黑马主播单场带货千万,抖音直播市场还有哪些新机遇?
  3. clang 中英文帮助手册
  4. 计算机主机是几几年的怎么查,怎样查询电脑上次开机时间_电脑开机时间查询方法-系统城...
  5. IOS 点击空白处隐藏键盘的几种方法
  6. 全球首只AIGC动画短片发行,日漫风格超治愈!
  7. 牛客 · 奇♂妙拆分
  8. 开源项目之开源的2D游戏引擎 HGE
  9. 北邮 离散数学 期末必考题总结(含重点英文单词)
  10. 简单差分放大器和套筒式共源共栅放大器Cadence仿真