我遇到MaterialCalendarView库的问题。 直到我选择装饰者的一天,一切都很好,因为装饰者的颜色与选择颜色相同。
这是正常的点击:
和问题:
装饰器代码:
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日期删除了旧的并设置了新的
答案 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>