zoukankan      html  css  js  c++  java
  • MaterialCalendarView使用时遇到的问题

    一、概述

    MaterialCalendarView是一个开源项目。功能强大支持多选、单选、标注等。

    二、问题

    1、其继承自ViewGroup,故与CalendarView半毛钱关系都没有,完全是一个新的类
    2、其子类CalendarDay是经过调整的

    CalendarDay date = new CalendarDay();
    ......
    Log.e(LOG_TAG, "Date选中日期:" + date.getDate().getYear() + "-" + date.getDate().getMonth() + "-" + date.getDate().getDay());
    Log.e(LOG_TAG, "Calendar选中日期:" + date.getCalendar().get(Calendar.YEAR) + "-" + (date.getCalendar().get(Calendar.MONTH) + 1) + "-" + date.getCalendar().get(Calendar.DAY_OF_MONTH));
    

    得到的结果为

    Date选中日期:116-3-6
    Calendar选中日期:2016-4-30
    

    即:

    CalendarDay.getDate().getYear()得到的年份 = 真实年份 - 1900
    CalendarDay.getDate().getMonth()得到的月份 = 真实年份 - 1
    CalendarDay.getDate().getDay()得到的日 = 星期数 - 1
    

    3、关于DayViewDecorator类
    此类为抽象类,定义如下

    /**
     * Decorate Day views with drawables and text manipulation
     */
    public interface DayViewDecorator {
    
        /**
         * Determine if a specific day should be decorated
         *
         * @param day {@linkplain CalendarDay} to possibly decorate
         * @return true if this decorator should be applied to the provided day
         */
        boolean shouldDecorate(CalendarDay day);
    
        /**
         * Set decoration options onto a facade to be applied to all relevant days
         *
         * @param view View to decorate
         */
        void decorate(DayViewFacade view);
    
    }
    

    实际使用时,只需实现上述两个方法即可,例如

    public class EventDecorator implements DayViewDecorator {
    
        private final int color;
        private final HashSet<CalendarDay> dates;
    
        public EventDecorator(int color, Collection<CalendarDay> dates) {
            this.color = color;
            this.dates = new HashSet<>(dates);
        }
    
        @Override
        public boolean shouldDecorate(CalendarDay day) {
            return dates.contains(day);
        }
    
        @Override
        public void decorate(DayViewFacade view) {
            view.addSpan(new DotSpan(5, color));
        }
    }
    
  • 相关阅读:
    解决:信息中插入avi格式的视频时,提示“unsupported video format”
    java字节数组和16进制之间的转换
    16进制转换字节数组工具类
    如何在ubuntu 12.04 中安装经典的 GNOME桌面
    Ubuntu安装软件提示”需要安装不能信任的软件包”解决办法
    Ubuntu系统下运行Eclipse出现找不到jre的问题的解决方法
    ubuntu添加共享出错
    从scrapy使用经历说开来
    有趣的问题--12 coins problem
    一个奇怪的MySQL错误返回
  • 原文地址:https://www.cnblogs.com/neillee/p/5467621.html
Copyright © 2011-2022 走看看