A customizable calendar for android. Now, customize your calendar your way.
Gradle
Add dependencies in build.gradle
,
dependencies {
compile 'com.p_v:flexiblecalendar:0.1.1'
}
Customize FlexibleCalendar using the ICalendarView interface
calendarView.setCalendarView(new FlexibleCalendarView.ICalendarView() {
@Override
public BaseCellView getCellView(int position, View convertView, ViewGroup parent) {
//customize the date cells
BaseCellView cellView = (BaseCellView) convertView;
if (cellView == null) {
LayoutInflater inflater = LayoutInflater.from(CalendarActivity4.this);
cellView = (BaseCellView) inflater.inflate(R.layout.calendar3_date_cell_view, null);
}
return cellView;
}
@Override
public BaseCellView getWeekdayCellView(int position, View convertView, ViewGroup parent) {
//customize the weekday header cells
BaseCellView cellView = (BaseCellView) convertView;
if (cellView == null) {
LayoutInflater inflater = LayoutInflater.from(CalendarActivity4.this);
cellView = (BaseCellView) inflater.inflate(R.layout.calendar3_week_cell_view, null);
cellView.setBackgroundColor(getResources().getColor(android.R.color.holo_purple));
cellView.setTextColor(getResources().getColor(android.R.color.holo_orange_light));
cellView.setTextSize(18);
}
return cellView;
}
@Override
public String getDayOfWeekDisplayValue(int dayOfWeek, String defaultValue) {
return String.valueOf(defaultValue.charAt(0));
}
});
Display events for a day using the EventDataProvider
calendarView.setEventDataProvider(new FlexibleCalendarView.EventDataProvider() {
@Override
public List<Integer> getEventsForTheDay(int year, int month, int day) {
return getEventColorList(year,month,day);
}
});
Track the month change event by setting the OnMonthChangeListener
calendarView.setOnMonthChangeListener(new FlexibleCalendarView.OnMonthChangeListener() {
@Override
public void onMonthChange(int year, int month, int direction) {
//do things on month change
}
});
Display circular events in different colors and sizes.
Choose whether to show dates outside month or not by setting the showDatesOutsideMonth
flag,
using FlexibleCalendarView#showDatesOutsideMonth()
method.
Navigate the calendar:
goToCurrentMonth
- Go the the current month
moveToNextDate
- Select the date after the current selection
moveToPreviousDate
- Select the date before the current selection
moveToNextMonth
- Move the view to the next month from the current visible month
moveToPreviousMonth
- Move the view to the previous month from the current visible month
Customizable display cells with different states:
state_date_regular
- Regular date
state_date_today
- Today's date
state_date_selected
- Selected date
state_date_outside_month
- Date lying outside month but in current month view
Sample cell background:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:flexible="http://schemas.android.com/apk/res-auto">
<item flexible:state_date_regular="true"
android:drawable="@drawable/cell_purple_background"/>
<item flexible:state_date_today="true"
android:drawable="@drawable/cell_gray_background"/>
<item flexible:state_date_selected="true"
android:drawable="@drawable/cell_red_background"/>
<item flexible:state_date_outside_month="true"
android:drawable="@drawable/cell_blue_background"/>
</selector>