Home > database >  How to set different colors for multiply selected dates?
How to set different colors for multiply selected dates?

Time:02-17

I use com.prolificinteractive.materialcalendarview.MaterialCalendarView in my app. Is it possible to set different colors for multiply selected dates? Or I need use custom calendarView? thanks.

CodePudding user response:

You should be able to set different decorators for each day of the week. Each decorator will have a different selector associated to it.

For example:

mcv.addDecorators(
            new MondayDecorator(this),
            new TuesdayDecorator(),
            ...
    );
public class MondayDecorator implements DayViewDecorator {

    private final Calendar calendar = Calendar.getInstance();
    private final Drawable drawable;

    public MySelectorDecorator(Activity context) {
        drawable = context.getResources().getDrawable(R.drawable.monday_selector);
    }

    @Override
    public boolean shouldDecorate(CalendarDay day) {
        day.copyTo(calendar);
        int weekDay = calendar.get(Calendar.DAY_OF_WEEK);
        return weekDay == Calendar.MONDAY;
    }

    @Override
    public void decorate(DayViewFacade view) {
        view.setSelectionDrawable(drawable);
    }
}

and finally your monday_selector:

    <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
    android:exitFadeDuration="@android:integer/config_shortAnimTime">

    <item android:state_checked="true"
        android:drawable="@drawable/ic_monday_selector" />

    <item android:state_pressed="true"
        android:drawable="@drawable/ic_monday_selector" />

    <item android:drawable="@android:color/transparent" />

</selector>

I haven't tried it but this should work.

  • Related