Customization Builder - prolificinteractive/material-calendarview GitHub Wiki
Certain parameters are only modifiable using the state builder of the MaterialCalendarView
.
Using the builder prevents from updating the view each time one of the setters is called. The view is updated when calling Builder#commit()
and that improve performances.
Previously, the fields could be customize using casual setters.
Here is a concrete example of how to use the builder:
mcv.state().edit()
.setFirstDayOfWeek(Calendar.WEDNESDAY)
.setMinimumDate(CalendarDay.from(2016, 4, 3))
.setMaximumDate(CalendarDay.from(2016, 5, 12))
.setCalendarDisplayMode(CalendarMode.WEEKS)
.setSaveCurrentPosition(true)
.commit();
state.edit() vs newState()
Using mcv.state().edit()
will preserve the current state of the MaterialCalendarView
while mcv.newState()
will initialize the builder with new parameters.
Only the fields that are modifiable using the builder can be reset or edit. Here is the list of the fields:
- First Day Of Week
- Minimum Date
- Maximum Date
- Calendar Display Mode
As an example, if you are setting firstDayOfWeek
inside your xml, and you want to preserve the field when using the builder, you should use state.edit()
.
However if you don't want to preserve any current parameters from the list above, use newState()
. In most cases state.edit()
should be the right method to use.
First Day Of The Week
The default first day of the week is Sunday. You can set a custom day of the week by setting mcv_firstDayOfWeek
in xml, or by calling setFirstDayOfWeek()
.
The xml attribute is an enum of sunday
through saturday
and setFirstDayOfWeek()
accepts values from java.util.Calendar
such as Calendar.MONDAY
.
Date Ranges
By default, the calendar displays months for 200 years before today and 200 years after.
You can specify different minimum and maximum dates by calling setMinimumDate(CalendarDay)
and setMaximumDate(CalendarDay)
.
Passing null
will reset back to the default 200 years.
There are also convenience methods that accept a Calendar
or a Date
object and convert them to a CalendarDay
using the relevant CalendarDay.from()
factory method.
Calendar Display Mode
MaterialCalendarView
propose two display modes: weekly and monthly. You can set the display mode in your xml using the attribute mcv_calendarMode
with month
for monthly mode, or week
for weekly mode.
You can also use the builder setCalendarDisplayMode(CalendarMode)
parameter.
It is important to note that the CalendarMode.WEEKS
is still experimental.
Save current position between week and month mode
SaveCurrentPosition
is set to false by default. When switching between week and month mode, the view redirect you to the today's date.
When setSaveCurrentPosition
is set to true
, the calendar will stay on the current position or last selected date.