Обратный порт Android CalendarView с дизайном Material. Цель состоит в том, чтобы внешний вид и ощущения выглядели как Material, а не на 100% соответствовали реализации платформы.
Шаг 1. Добавьте репозиторий JitPack в файл сборки.
allprojects {
repositories {
.. .
maven { url ' https://jitpack.io ' }
}
}
Шаг 2. Добавьте зависимость
dependencies {
implementation ' com.github.prolificinteractive:material-calendarview:${version} '
}
MaterialCalendarView
в свои макеты или иерархию представлений.OnDateSelectedListener
или вызовите MaterialCalendarView.getSelectedDates()
когда вам это нужно.Javadoc доступен здесь
Пример:
< com .prolificinteractive.materialcalendarview.MaterialCalendarView
xmlns : app = " http://schemas.android.com/apk/res-auto "
android : id = " @+id/calendarView "
android : layout_width = " match_parent "
android : layout_height = " wrap_content "
app : mcv_showOtherDates = " all "
app : mcv_selectionColor = " #00F "
/>
Обязательно проверьте всю документацию, доступную здесь.
Одна из целей этой библиотеки — быть настраиваемой. Множество вариантов включают в себя:
Все это и многое другое можно сделать с помощью API декоратора. Пожалуйста, ознакомьтесь с документацией декоратора.
Material CalendarView 2.0 содержит серьезные изменения в ядре своего API: мы перешли от использования java.util.Calendar
к java.time.LocalDate
. Кроме того, это не должно влиять на общедоступный API (мы все еще используем CalendarDay
), и Calendar
, и LocalDate
работают немного по-другому. Один из примеров: месяцы теперь индексируются от 1 (январь) до 12 (декабрь). Вы можете получить доступ к LocalDate
из CalendarDay
используя getDate()
.
Также в этом выпуске нет каких-либо изменений, но в нем представлены значительные улучшения виджета. Для пользователя были добавлены дополнительные настройки (настраиваемые шрифты, прослушивание длинных кликов, отображение/скрытие дней недели), а также различные исправления, улучшения примера приложения и общая очистка. Обязательно проверьте CHANGELOG и раздел релиза для получения более подробной информации.
Недавно мы обновили Gradle до последней версии и решили перенести наши библиотеки на хостинг Jitpack. Пожалуйста, обратитесь к разделу установки для более подробной информации.
Критическое изменение: setFirstDayOfWeek
, setMin/MaxDate
и setCalendarDisplayMode
перемещаются в объект State
. Это было необходимо, поскольку было неясно, что это были не простые установщики - по отдельности они оказывали побочный эффект и вызывали полный пересчет адаптера/диапазона дат. Типичное использование представления предполагает установку всех этих инвариантов заранее во время onCreate
, и пользователь не знал, что установка всех четырех из них приведет к большим потерям. Не говоря уже о том, что некоторые вещи имели побочный эффект — некоторые сбрасывали текущий день или выбранную дату. В результате одни и те же 4 метода, вызванные в разном порядке, могут привести к разному состоянию, а это плохо.
В большинстве случаев вам просто нужно будет заменить установку этих инвариантов на:
mcv . state (). edit ()
. setFirstDayOfWeek ( Calendar . WEDNESDAY )
. setMinimumDate ( CalendarDay . from ( 2016 , 4 , 3 ))
. setMaximumDate ( CalendarDay . from ( 2016 , 5 , 12 ))
. setCalendarDisplayMode ( CalendarMode . WEEKS )
. commit ();
mcv.state().edit()
сохранит ранее установленные значения; mcv.newState()
создаст новое состояние, используя значения по умолчанию. Вызов commit
вызовет перестроение адаптеров и диапазонов дат. Рекомендуется, чтобы эти изменения состояния происходили при первом изменении MCV (перед настройкой чего-либо еще, например текущей даты или выбранной даты); мы не даем никаких гарантий, что эти изменения будут сохранены при изменении состояния.
Подробности использования см. в разделе CUSTOMIZATION_BUILDER.
Новое: добавлен setSelectionMode(SELECTION_MODE_RANGE)
позволяющий выбрать две даты и выбрать весь диапазон дат. Большое спасибо papageorgiouk за работу над этой функцией.
Другие изменения смотрите в CHANGELOG.
Хотите внести свой вклад? Создайте нас и отправьте запрос на включение! Обязательно сначала ознакомьтесь с нашими выпусками.
Материальный календарь защищен авторскими правами (c) 2018 Prolific Interactive. Его можно распространять на условиях, указанных в файле ЛИЦЕНЗИИ.
Material Calendar View поддерживается и финансируется Prolific Interactive. Названия и логотипы являются торговыми марками Prolific Interactive.