A powerful and flexible calendar widget for Android applications. Supports multiple views, date range selection, custom styling using ViewBinding, and much more.
You can create any type of calendar you want with this view.
- Month, Week, and Day view
- Single, Multiple, and Range date selection
- Fully customizable styles (colors, fonts, icons)
- Localization & custom first day of week
- Click listeners support
- Dark mode compatible
Calendar | Support | Source |
---|---|---|
Gregorian (Julian) | ✅ | java.time.LocalDate java.time.YearMonth |
Hijri (Islamic) | ✅ | java.time.chrono.HijrahDate |
Solar Hijri Jalali (Persian) |
✅ | Jalali Calendar from Mohammad Razeghi |
This library is available on JitPack. Add it to your project in a few simple steps:
// For old versions
allprojects {
repositories {
maven { url 'https://jitpack.io' }
}
}
// For Gradle 7.0 and above (settings.gradle.kts)
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
mavenCentral()
maven { url = uri("https://jitpack.io") }
}
}
dependencies {
implementation 'com.github.mortezasun:calendarview:1.1.0-alpha1'
}
<com.develotter.calendarview.MultiMonthView
android:id="@+id/calendar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
var thisCalendarStatus = CalendarStatus()
binding.calendar.addMonths(GregorianStatus::class.java,object,object :
MonthSampleAdapter<RowDayBinding, RowWeekBinding, RowMonthBinding, RowShowSelectedDayBinding>(thisCalendarStatus){}
var dayStatusListSelectedBySingleSelect: MutableList<DayStatus> = mutableListOf()
dayStatusListSelectedBySingleSelect.add(0, object :DayStatus(LocalDate.now(), lcInUse){})
binding.calendar.addMonths(GregorianStatus::class.java,object,object :
MonthSampleAdapter<RowCalendarBinding, RowCalendarBinding, RowMonthBinding, RowShowSelectedDayBinding>
(thisCalendarStatus,dayStatusListSelectedBySingleSelect=dayStatusListSelectedBySingleSelect ))