package com.prolificinteractive.materialcalendarview.sample; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import butterknife.BindView; import butterknife.ButterKnife; import com.prolificinteractive.materialcalendarview.CalendarDay; import com.prolificinteractive.materialcalendarview.DayViewDecorator; import com.prolificinteractive.materialcalendarview.DayViewFacade; import com.prolificinteractive.materialcalendarview.MaterialCalendarView; import org.threeten.bp.LocalDate; import org.threeten.bp.Month; /** * Show off setting min and max dates and disabling individual days */ public class DisableDaysActivity extends AppCompatActivity { @BindView(R.id.calendarView) MaterialCalendarView widget; @Override protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_basic); ButterKnife.bind(this); // Add a decorator to disable prime numbered days widget.addDecorator(new PrimeDayDisableDecorator()); // Add a second decorator that explicitly enables days <= 10. This will work because // decorators are applied in order, and the system allows re-enabling widget.addDecorator(new EnableOneToTenDecorator()); final LocalDate calendar = LocalDate.now(); widget.setSelectedDate(calendar); final LocalDate min = LocalDate.of(calendar.getYear(), Month.JANUARY, 1); final LocalDate max = LocalDate.of(calendar.getYear() + 1, Month.OCTOBER, 31); widget.state().edit() .setMinimumDate(min) .setMaximumDate(max) .commit(); } private static class PrimeDayDisableDecorator implements DayViewDecorator { @Override public boolean shouldDecorate(final CalendarDay day) { return PRIME_TABLE[day.getDay()]; } @Override public void decorate(final DayViewFacade view) { view.setDaysDisabled(true); } private static boolean[] PRIME_TABLE = { false, // 0? false, true, // 2 true, // 3 false, true, // 5 false, true, // 7 false, false, false, true, // 11 false, true, // 13 false, false, false, true, // 17 false, true, // 19 false, false, false, true, // 23 false, false, false, false, false, true, // 29 false, true, // 31 false, false, false, //PADDING }; } private static class EnableOneToTenDecorator implements DayViewDecorator { @Override public boolean shouldDecorate(CalendarDay day) { return day.getDay() <= 10; } @Override public void decorate(DayViewFacade view) { view.setDaysDisabled(false); } } }