Simple and free customize calendar view.
- Horizontal paging calendars
- Customizable day cell
- Click and change pager listeners
Require Android 5.0+
Add build.gradle
implementation 'jp.kuluna:calendarviewpager:2.0.0'
layout
<jp.kuluna.calendarviewpager.CalendarViewPager
android:id="@+id/calendar_view_pager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
MainActivity.kt
val viewPager = findViewById<CalendarViewPager>(R.id.calendar_view_pager)
viewPager.adapter = CalendarPagerAdapter(this)
Override CalendarPagerAdapter
class CustomCalendarAdapter(context: Context) : CalendarPagerAdapter(context) {
override fun onCreateView(parent: ViewGroup, viewType: Int): View {
return LayoutInflater.from(context).inflate(R.layout.view_calendar_cell, parent, false)
}
override fun onBindView(view: View, day: Day) {
if (day.state == DayState.ThisMonth) {
view.visibility = View.VISIBLE
view.findViewById<TextView>(R.id.text_day).text = day.calendar.get(Calendar.DAY_OF_MONTH).toString()
view.findViewById<View>(R.id.view_dot).visibility = if (day.isSelected) View.VISIBLE else View.GONE
} else {
view.visibility = View.INVISIBLE
}
}
}
// setup adapter
val viewPager = findViewById<CalendarViewPager>(R.id.calendar_view_pager)
viewPager.adapter = CustomCalendarAdapter(this)
// listeners
viewPager.onDayClickListener = { day: Day ->
Toast.makeText(this, day.calendar.time.toString(), Toast.LENGTH_SHORT).show()
}
viewPager.onDayLongClickListener = { day: Day ->
Toast.makeText(this, "Long Clicked :" + day.calendar.time.toString(), Toast.LENGTH_SHORT).show()
true
}
viewPager.onCalendarChangeListener = { calendar: Calendar ->
Toast.makeText(this, calendar.time.toString(), Toast.LENGTH_SHORT).show()
}
- Fork it!
- Create your feature branch: git checkout -b my-new-feature
- Commit your changes: git commit -am 'Add some feature'
- Push to the branch: git push origin my-new-feature
- Submit a pull request :D
MIT License.