Styling: Month view

The Month view mode has the most complicated styling since there are many different types of cells that are used to represent different information to the user.
In order to apply custom style for this mode, you need to initialize the monthViewStyle property of RadCalendar with instance of CalendarMonthViewStyle.
The following image shows the different UI elements that are customizable in this view mode:

There are some properties that change the month view :

  • backgroundColor - a color that is applied as background color
  • showTitle - determines if title should be shown
  • showWeekNumbers - determines if week numbers should be shown
  • showDayNames - determines if day names should be shown.

In order to style any type of the available cell in calendar you need to initialize the corresponding style property of CalendarMonthViewStyle class, that is used for this view mode:

  • dayCellStyle - defines styling of cells that represent a regular day in month/week. This is the default style that will be applied if the date is not special
  • selectedDayCellStyle - defines styling of selected cells
  • todayCellStyle - defines styling of the cell that shows the today date
  • dayNameCellStyle - defines styling of cells with names of days
  • weekNumberCellStyle - defines styling of cells with number of weeks
  • weekendCellStyle - defines styling of cells that visualize days of the weekends
  • titleCellStyle - defines styling for the calendar title with month name

There are two classes you should use to initialize these properties: CalendarCellStyleand its inheritor CalendarDayCellStyle.
Properties weekNumberCellStyle, dayNameCellStyle and titleCellStyle should be initialized with CalendarCellStyle instance.
Properties dayCellStyle, todayCellStyle, selectedDayStyle and weekendCellStyle should be initialized with CalendarDayCellStyle.

The CalendarCellStyle class has properties for common styling options of any of the cells:

  • cellBorderWidth - defines the border width of the cell
  • cellBorderColor - defines the border color of the cell
  • cellBackgroundColor - defines the background color of the cell
  • cellAlignment - defines the content alignment in the cell
  • cellTextColor - defines the color for the text shown in the cell
  • cellTextFontName - defines the name of the font you want to use.
  • cellTextFontStyle - defines the style of the font used for text in cell.
  • cellTextSize - defines the text size in cell
  • cellPaddingHorizontal - defines the amount of horizontal padding
  • cellPaddingVertical - defines the amount of vertical padding

The CalendarDayCellStyle extends this set with some style properties specific to the date cells like:

  • showEventsText - defines if the events should be visualized with text and shape or with shape only
  • eventTextColor - defines the color for the text of events shown in the date cell
  • eventFontName - defines the name of the font you want to use for events text in date cell.
  • eventFontStyle - defines the style of the font used for events text in date cell.
  • eventTextSize - defines the size of the events text in date cell

Example

To better illustrate the usage of styling properties, we will use a simple scenario in which the cells are customized:

<rc:RadCalendar.monthViewStyle>
    <rc:CalendarMonthViewStyle backgroundColor="Gray" showTitle="true" showWeekNumbers="true" showDayNames="true" >
        <rc:CalendarMonthViewStyle.todayCellStyle>
            <rc:DayCellStyle cellBackgroundColor="#66bbae" cellBorderWidth="2" cellBorderColor="#f1e8ca" cellTextColor="#5b391e" cellTextFontName="Times New Roman" cellTextFontStyle="Bold" cellTextSize="14" />
        </rc:CalendarMonthViewStyle.todayCellStyle>

        <rc:CalendarMonthViewStyle.dayCellStyle>
            <rc:DayCellStyle showEventsText="true" eventTextColor="White" eventFontName="Times New Roman" eventFontStyle="BoldItalic" eventTextSize="8" 
                                    cellAlignment="VerticalCenter" cellPaddingHorizontal="10" cellPaddingVertical="5" cellBackgroundColor="#9ebd9e" 
                                    cellBorderWidth="1" cellBorderColor="#f1e8ca" cellTextColor="#745151" cellTextFontName="Times New Roman" cellTextFontStyle="Bold" ios:cellTextSize="12" android:cellTextSize="10"/>
        </rc:CalendarMonthViewStyle.dayCellStyle>

        <rc:CalendarMonthViewStyle.weekendCellStyle>
            <rc:DayCellStyle eventTextColor="BlueViolet" eventFontName="Times New Roman" eventFontStyle="BoldItalic" eventTextSize="8" 
                                    cellAlignment="VerticalCenter" cellPaddingHorizontal="10" cellPaddingVertical="5" cellBackgroundColor="#dd855c" 
                                    cellBorderWidth="1" cellBorderColor="#f1e8ca" cellTextColor="#745151" cellTextFontName="Times New Roman" cellTextFontStyle="Bold" cellTextSize="12" />
        </rc:CalendarMonthViewStyle.weekendCellStyle>

        <rc:CalendarMonthViewStyle.selectedDayCellStyle>
            <rc:DayCellStyle eventTextColor="Blue" eventFontName="Times New Roman" eventFontStyle="Bold" eventTextSize="8" 
                                    cellAlignment="VerticalCenter" cellPaddingHorizontal="10" cellPaddingVertical="5" cellBackgroundColor="#dbcbbb" 
                                    cellBorderWidth="2" cellBorderColor="#745151" cellTextColor="Black" cellTextFontName="Times New Roman" cellTextFontStyle="Bold" cellTextSize="18" />
        </rc:CalendarMonthViewStyle.selectedDayCellStyle>

        <rc:CalendarMonthViewStyle.weekNumberCellStyle>
            <rc:CellStyle cellBackgroundColor="#bbcbdb" cellBorderWidth="1" cellBorderColor="#f1e8ca" cellTextColor="#745151" cellTextFontName="Times New Roman" cellTextFontStyle="Bold" cellTextSize="8" />
        </rc:CalendarMonthViewStyle.weekNumberCellStyle>

        <rc:CalendarMonthViewStyle.dayNameCellStyle>
            <rc:CellStyle  cellBackgroundColor="#f1e8ca" cellBorderWidth="1" cellBorderColor="#745151" cellTextColor="#745151" cellTextFontName="Times New Roman" cellTextFontStyle="Bold" cellTextSize="10" />
        </rc:CalendarMonthViewStyle.dayNameCellStyle>

        <rc:CalendarMonthViewStyle.titleCellStyle>
            <rc:CellStyle  cellBackgroundColor="#bbcbdb" cellBorderWidth="1" cellBorderColor="#745151" cellTextColor="#dd855c" cellTextFontName="Times New Roman" cellTextFontStyle="Bold" cellTextSize="18" />
        </rc:CalendarMonthViewStyle.titleCellStyle>

        <rc:CalendarMonthviewStyle.inlineEventCellStyle>
            <rc:InlineEventCellStyle cellBackgroundColor="LightPink" eventTextColor="Gold" eventFontName="Avenir" eventFontStyle="BoldItalic" eventTextSize="12" 
                                    timeTextColor="DeepSkyBlue" timeFontName="Courier" timeFontStyle="Regular" timeTextSize="14"/>
        </rc:CalendarMonthviewStyle.inlineEventCellStyle>

    </rc:CalendarMonthViewStyle>
</rc:RadCalendar.monthViewStyle>

This is how the calendar looks like:

Calendar month view styling Calendar month view styling

References

Want to see this scenario in action?
Check our SDK examples repo on GitHub. You will find this and many other practical examples with NativeScript UI.

Related articles you might find useful: