如何在CalendarView中为日期应用样式/颜色

3
你好,我创建了一个包含日历的片段。
<?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>

通过点击特定日期,我添加了一个操作,打开一个包含该日事件的新片段。这些事件应该存储在数据库中吗?如何为包含事件的日期着色,例如image
public class CalendarFragment extends Fragment {
    CalendarView calendar;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootview = inflater.inflate(R.layout.fragment_rendezvous, container, false);
        calendar = (CalendarView) rootview.findViewById(R.id.calendar);
        calendar.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
            @Override

            public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) {
                Intent intent = new Intent(getActivity(), Events.class);
                startActivity(intent);
            }
        });
        return rootview;
    }
}

提前感谢

1个回答

0

我已经使用以下方式完成了

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接