kizitonwose /Calendar

A highly customizable calendar view and compose library for Android and Kotlin Multiplatform.

★ 5,625⑂ 590👁 34⑃ 116● 531▤ 64
KotlinCreated 2019-04-20
5,625
stars
+0+1+15
590
forks
34
watchers
116
prs
531
issues
64
releases
–
discussions

README

Calendar

A highly customizable calendar library for Android and Compose Multiplatform, backed by RecyclerView for the view system, and LazyRow/LazyColumn for compose.




![Android Library[not(contains(text(),%27-%27))][last()])](https://central.sonatype.com/search?q=g:com.kizitonwose.calendar)
![Multiplatform Library[not(contains(text(),%27-%27))][last()])](https://central.sonatype.com/search?q=g:com.kizitonwose.calendar)

With this library, your calendar will look however you want it to.

!Preview Phone

!Preview Web Tablet

 Features

- [x] Week, month, or year modes - Show a week-based calendar, or the typical month calendar, or a year-based calendar.
- [x] Single, multiple, or range selection - Total flexibility to implement the date selection
  whichever way you like.
- [x] Disable desired dates - Prevent selection of some dates by disabling them.
- [x] Boundary dates - Limit the calendar date range.
- [x] Custom date view/composable - Make your day cells look however you want, with any
  functionality you want.
- [x] Custom calendar view/composable - Make your calendar look however you want, with whatever
  functionality you want.
- [x] Custom first day of the week - Use any day as the first day of the week.
- [x] Horizontal or vertical scrolling calendar.
- [x] HeatMap calendar - Suitable for showing how data changes over time, like GitHub's contribution
  chart.
- [x] Year/Month/Week headers and footers - Add headers/footers of any kind on each year/month/week.
- [x] Easily scroll to any date/week/month/year on the calendar via swipe actions or programmatically.
- [x] Use all RecyclerView/LazyRow/LazyColumn customizations since the calendar extends from
  RecyclerView for the view system and uses LazyRow/LazyColumn for compose.
- [x] Design your calendar however you want. The
  library provides the logic, you provide the views/composables.

 Sample project

It's important to check out the sample app. There are lots of examples provided for both view and compose implementations. 
Most techniques that you would want to implement are already done in the examples.

Download the Android sample app here

View the Android sample app's source code here

View the multiplatform sample project online at https://calendar.kizitonwose.dev

View the multiplatform sample project's source code here

 Setup

The library provides the following artifacts: 

com.kizitonwose.calendar:compose: The compose artifact for Android projects. This uses the java.time APIs. 

com.kizitonwose.calendar:compose-multiplatform: The compose artifact for Compose Multiplatform projects. This uses the kotlinx-datetime library and supports Android, iOS, js, WasmJs and Desktop platforms.

com.kizitonwose.calendar:view: The view artifact for Android projects. This uses the java.time APIs and can exist alongside the Android compose artifact in an Android project if needed.

 Step 1

This step is required ONLY if your Android app's minSdkVersion is below 26. Jump to step 2 if this 

Snapshot: 2026-11-04T14:00:00Z · Data license Apache-2.0 · JSON