我的目標是找到一個Android庫,它將允許我在基於數組的日曆視圖上標記各種日期。日期可能會連續或不連續。我的理想場景是更改每個日期的背景顏色。重要的複雜性是,我不知道這種顏色,直到運行時,因爲它將來自服務器查詢。material-calendarview設置日期的背景顏色
我一直在研究這一整天,我的最大希望似乎是material-calendarview
(github)。但是,我發現他們的代碼有點難以理解,這對我來說很難,但我完全陷入了困境。
我添加了這樣的日曆在我的XML佈局:
<com.prolificinteractive.materialcalendarview.MaterialCalendarView
android:id="@+id/calendar_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
xmlns:app="http://schemas.android.com/apk/res-auto"
app:mcv_showOtherDates="all"
app:mcv_selectionColor="#00F"/>
然後在我的活動,我有這方面的實例變量:
private MaterialCalendarView calendarView;
private ArrayList<Date> markedDates;
這個代碼我onCreateView()
calendarView = (MaterialCalendarView) view.findViewById(R.id.calendar_view);
好吧,很簡單。但我無法弄清楚如何從日期數組中標記日曆。我工作的這個方法,但我只是不知道如何着手超越了我這裏有:
private void initializeCalendar() {
calendarView.setOnDateChangedListener(context);
calendarView.setShowOtherDates(MaterialCalendarView.SHOW_ALL);
Calendar calendar = Calendar.getInstance();
calendarView.setSelectedDate(calendar.getTime());
calendar.set(calendar.get(Calendar.YEAR), Calendar.JANUARY, 1);
calendarView.setMinimumDate(calendar.getTime());
calendar.set(calendar.get(Calendar.YEAR), Calendar.DECEMBER, 31);
calendarView.setMaximumDate(calendar.getTime());
int bgColor = sharedVisualElements.getPrimaryColor();
calendarView.addDecorators(new EventDecorator(bgColor, ????));
}
最後一行是指這個內部類:
private class EventDecorator implements DayViewDecorator {
private final int color;
private final HashSet<CalendarDay> dates;
public EventDecorator(int color, Collection<CalendarDay> dates) {
this.color = color;
this.dates = new HashSet<>(dates);
}
@Override
public boolean shouldDecorate(CalendarDay day) {
return dates.contains(day);
}
@Override
public void decorate(DayViewFacade view) {
view.addSpan(new DotSpan(5, color));
}
}
我認爲我的挑戰將我的ArrayList<Date> markedDates
轉換爲他們所謂的Collection<CalendarDay> dates
。同意?但這是我真正陷入困境的地方。這data structure是我的奇怪。當我嘗試通過調用new CalendarDay()
來實例化它時,我的類立即用大約10種新方法進行擴展,我不明白它們的作用或如何處理它們。顯然,我在這裏脫軌。它不能是這個棘手。
有沒有人爲此目的使用此庫並知道如何完成此任務?我正在停下來。另外,如果有一個更簡單的庫允許我使用僅在運行時已知的顏色設置背景顏色,那麼我就是全部耳朵。
感謝您的任何幫助。我擔心我以混亂的方式寫下這些,這是我完全困惑的結果。
兄弟當我這樣做getYear()已棄用我可以做些什麼來代替 –