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);
    }
}