如何为多选日期设置不同的颜色?
How to set different colors for multiply selected dates?
我在我的应用程序中使用 com.prolificinteractive.materialcalendarview.MaterialCalendarView
。
是否可以为多个选定的日期设置不同的颜色?或者我需要使用自定义 calendarView?谢谢。
您应该能够为一周中的每一天设置不同的装饰器。每个装饰器都有一个与之关联的不同选择器。
例如:
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);
}
}
最后是你的 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>
我没试过,但应该可以。
我在我的应用程序中使用 com.prolificinteractive.materialcalendarview.MaterialCalendarView
。
是否可以为多个选定的日期设置不同的颜色?或者我需要使用自定义 calendarView?谢谢。
您应该能够为一周中的每一天设置不同的装饰器。每个装饰器都有一个与之关联的不同选择器。
例如:
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);
}
}
最后是你的 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>
我没试过,但应该可以。