CosmoCalendar

CosmoCalendar is a fully customizable calendar with a wide variety of features and displaying modes.

Usage

compile 'com.github.applikeysolutions:cosmocalendar:1.0.4'

Customization

Common

  • calendarOrientation - Possible values: HORIZONTAL, VERTICAL
  • calendarBackgroundColor
  • monthTextColor
  • otherDayTextColor
  • dayTextColor
  • firstDayOfTheWeek
  • weekDayTitleTextColo
  • showDaysOfWeek - Defines if we need to display week day titles for every month
  • showDaysOfWeekTitle - Defines if we need to display week day title for whole calendar

Selection

  • selectionType - Possible values: SINGLE, MULTIPLE, RANGE, NONE
  • selectedDayTextColor
  • selectedDayBackgroundColor
  • selectedDayBackgroundStartColor - Background color of START day from selected range
  • selectedDayBackgroundEndColor - Background color of END day from selected range
  • selectionBarMonthTextColor

Current day

  • currentDayTextColor
  • currentDayIconRes
  • currentDaySelectedIconRes
  • previousMonthIconRes
  • nextMonthIconRes

Weekend days

  • weekendDays
calendarView.setWeekendDays(new HashSet(){{
          add(Calendar.THURSDAY);
          add(Calendar.TUESDAY);
}});
  • weekendDayTextColor

Connected days

You can add some days for example holidays:

//Set days you want to connect
Calendar calendar = Calendar.getInstance();
Set<Long> days = new TreeSet<>();
days.add(calendar.getTimeInMillis());
...

//Define colors
int textColor = Color.parseColor("#ff0000");
int selectedTextColor = Color.parseColor("#ff4000");
int disabledTextColor = Color.parseColor("#ff8000");
ConnectedDays connectedDays = new ConnectedDays(days, textColor, selectedTextColor, disabledTextColor);

//Connect days to calendar
calendarView.addConnectedDays(connectedDays);

and customize them:

  • connectedDayIconRes;
  • connectedDaySelectedIconRes;
  • connectedDayIconPosition (TOP/BOTTOM);
calendarView.setConnectedDayIconPosition(ConnectedDayIconPosition.TOP);

Disabled days

You can add days so that you can not select them:

Set<Long> disabledDaysSet = new HashSet<>();
disabledDaysSet.add(System.currentTimeMillis());
calendarView.setDisabledDays(disabledDaysSet);

Disabled days criteria

  • month criteria range:
//from 1st to 5th day of the month
calendarView.setDisabledDaysCriteria(new DisabledDaysCriteria(1, 5, DisabledDaysCriteriaType.DAYS_OF_MONTH)); 
  • week criteria range:
//from Monday to Friday
DisabledDaysCriteria criteria = new DisabledDaysCriteria(Calendar.MONDAY, Calendar.FRIDAY, DisabledDaysCriteriaType.DAYS_OF_WEEK);
calendarView.setDisabledDaysCriteria(criteria);
  • disabledDayTextColor - Text color of disabled day

Month change listener

calendarView.setOnMonthChangeListener(new OnMonthChangeListener() {
          @Override
          public void onMonthChanged(Month month) {
              
          }
      });

Calendar dialog

new CalendarDialog(this, new OnDaysSelectionListener() {
         @Override
         public void onDaysSelected(List<Day> selectedDays) {
             
         }
     }).show();

Customized

Multiple

Range

Single-Choice

GitHub