MaterialCalendarView装饰器会覆盖选定的日期颜色问题

时间:2019-06-24 08:52:39

标签: java android material calendarview

我遇到MaterialCalendarView库的问题。 直到我选择装饰者的一天,一切都很好,因为装饰者的颜色与选择颜色相同。

这是正常的点击:

click on normal day

和问题:

issue with decorator click

装饰器代码:

public class EventDecoratorMonth implements DayViewDecorator {
    private CalendarDay date;
    private Context context;

    public EventDecoratorMonth(CalendarDay date, Context context) {
        this.date = date;
        this.context = context;
    }

    @Override
    public boolean shouldDecorate(CalendarDay day) {
        return day.equals(date);
    }

    @Override
    public void decorate(DayViewFacade view) {
        if (context != null)
            view.addSpan(new ForegroundColorSpan(ContextCompat.getColor(context, R.color.orange)));
    }
}

并通过xml选择颜色:app:mcv_selectionColor="@color/orange"

所选的日期文本颜色为白色,我使用mcv_dateTextAppearance和一个选择器将android:state_checked="true"更改为白色,并在其他所有情况下更改为灰色。 问题是当选择带有装饰器的日期时未应用mcv_dateTextAppearance

编辑: 我的选择器

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/white" android:state_checked="true" />
    <item android:color="@color/white" android:state_pressed="true" />
    <item android:color="@color/textGrey" android:state_enabled="false" />
    <item android:color="@color/textGrey" android:state_checked="false" />
    <item android:color="@color/textGrey" />
</selector>

该如何解决?

编辑2:

我用ForegroundColorSpan颜色设置为白色的装饰器进行了修复,并在changeSelected日期删除了旧的并设置了新的

1 个答案:

答案 0 :(得分:0)

尝试使用此选择器作为文本颜色

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:color="@color/white" android:state_checked="true" />

    <item android:color="@color/white" android:state_pressed="true" />

    <item android:color="@color/grey" android:state_enabled="false" />

    <item android:color="@color/grey" />

</selector>