Android 如何在CalendarView中将样式/颜色应用于日期
你好,我创建了一个包含日历的片段Android 如何在CalendarView中将样式/颜色应用于日期,android,calendar,Android,Calendar,你好,我创建了一个包含日历的片段 <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<CalendarView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/calendar"
android:layout_gravity="center" />
</LinearLayout>
</FrameLayout>
提前感谢试试这个来装饰你的约会吧
public class OneDayDecorator implements DayViewDecorator {
private CalendarDay date;
public OneDayDecorator() {
date = CalendarDay.today();
}
@Override
public boolean shouldDecorate(CalendarDay day) {
return date != null && day.equals(date);
}
@Override
public void decorate(DayViewFacade view) {
view.addSpan(new ForegroundColorSpan(Color.RED));
}
/**
* We're changing the internals, so make sure to call {@linkplain MaterialCalendarView#invalidateDecorators()}
*/
public void setDate(Date date) {
this.date = CalendarDay.from(date);
}
}
然后应用装饰器
mCalendarView.addDecorator(mSelectedDayDecorator);
使用ExtendedCalendarView,这很容易处理
事件我使用以下方法完成
calendar =Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
selectedDay =CalendarDay.from(calendar);
calendarMonth.setSelectedDate(selectedDay);
calendarMonth.addDecorator(new
SelectDayDecorator(selectedDay));
calendarView.setOnDateChangedListener(new
OnDateSelectedListener() {
@Override
public void onDateSelected (@NonNull MaterialCalendarView widget, @NonNull CalendarDay date,
boolean selected)
{
if (selected) {
calendarView.addDecorator(new UnselectDayDecorator(selectedDay));
selectedDay = date;
calendarView.addDecorator(new SelectDayDecorator(date));
}
}
});
public class SelectDayDecorator implements DayViewDecorator {
private CalendarDay date;
public SelectDayDecorator(CalendarDay day) {
date = day;
}
@Override
public boolean shouldDecorate(CalendarDay day) {
return date != null && day.equals(date);
}
@Override
public void decorate(DayViewFacade view) {
view.addSpan(new ForegroundColorSpan(Color.parseColor("#444453")));
}
public void setDate(Date date) {
this.date = CalendarDay.from(date);
}
}
public class UnselectDayDecorator implements DayViewDecorator {
private CalendarDay date;
public UnselectDayDecorator(CalendarDay day) {
date = day;
}
@Override
public boolean shouldDecorate(CalendarDay day) {
return date != null && day.equals(date);
}
@Override
public void decorate(DayViewFacade view) {
view.addSpan(new ForegroundColorSpan(Color.WHITE));
}
public void setDate(Date date) {
this.date = CalendarDay.from(date);
}
}
此代码为所选日期添加颜色?因为我想给包含事件或约会的日期上色?我应该使用php和mysqli吗?我如何给这个日期上色?你能详细说明这个答案吗?
calendar =Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
selectedDay =CalendarDay.from(calendar);
calendarMonth.setSelectedDate(selectedDay);
calendarMonth.addDecorator(new
SelectDayDecorator(selectedDay));
calendarView.setOnDateChangedListener(new
OnDateSelectedListener() {
@Override
public void onDateSelected (@NonNull MaterialCalendarView widget, @NonNull CalendarDay date,
boolean selected)
{
if (selected) {
calendarView.addDecorator(new UnselectDayDecorator(selectedDay));
selectedDay = date;
calendarView.addDecorator(new SelectDayDecorator(date));
}
}
});
public class SelectDayDecorator implements DayViewDecorator {
private CalendarDay date;
public SelectDayDecorator(CalendarDay day) {
date = day;
}
@Override
public boolean shouldDecorate(CalendarDay day) {
return date != null && day.equals(date);
}
@Override
public void decorate(DayViewFacade view) {
view.addSpan(new ForegroundColorSpan(Color.parseColor("#444453")));
}
public void setDate(Date date) {
this.date = CalendarDay.from(date);
}
}
public class UnselectDayDecorator implements DayViewDecorator {
private CalendarDay date;
public UnselectDayDecorator(CalendarDay day) {
date = day;
}
@Override
public boolean shouldDecorate(CalendarDay day) {
return date != null && day.equals(date);
}
@Override
public void decorate(DayViewFacade view) {
view.addSpan(new ForegroundColorSpan(Color.WHITE));
}
public void setDate(Date date) {
this.date = CalendarDay.from(date);
}
}