Ein Materialdesign-Backport von CalendarView für Android. Das Ziel besteht darin, ein materielles Erscheinungsbild zu erreichen und nicht zu 100 % mit der Implementierung der Plattform übereinzustimmen.
Schritt 1: Fügen Sie das JitPack-Repository zu Ihrer Build-Datei hinzu
allprojects {
repositories {
.. .
maven { url ' https://jitpack.io ' }
}
}
Schritt 2: Fügen Sie die Abhängigkeit hinzu
dependencies {
implementation ' com.github.prolificinteractive:material-calendarview:${version} '
}
MaterialCalendarView
zu Ihren Layouts oder Ansichtshierarchien hinzu.OnDateSelectedListener
fest oder rufen Sie MaterialCalendarView.getSelectedDates()
auf, wenn Sie es benötigen.Javadoc hier verfügbar
Beispiel:
< 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 "
/>
Sehen Sie sich unbedingt die gesamte hier verfügbare Dokumentation an.
Eines der Ziele dieser Bibliothek ist die Anpassbarkeit. Zu den vielen Optionen gehören:
All dies und noch mehr kann über die Decorator-API erledigt werden. Bitte schauen Sie sich die Dekorationsdokumentation an.
Material CalendarView 2.0 bringt eine wesentliche Änderung im Kern seiner API mit sich: Wir sind von der Verwendung von java.util.Calendar
auf java.time.LocalDate
umgestiegen. Außerdem sollte dies keine Auswirkungen auf die öffentliche API haben (wir verwenden immer noch CalendarDay
), sowohl Calendar
als auch LocalDate
funktionieren etwas anders. Ein Beispiel dafür: Monate werden jetzt von 1 (Januar) bis 12 (Dezember) indiziert. Sie können über CalendarDay
mit getDate()
auf das LocalDate
zugreifen.
Auch diese Version enthält keine grundlegenden Änderungen, sondern bietet erhebliche Verbesserungen am Widget. Für den Benutzer wurden weitere Anpassungen hinzugefügt (benutzerdefinierte Schriftarten, Listener für lange Klicks, Wochentage ein-/ausblenden) sowie verschiedene Korrekturen, Verbesserungen an der Beispiel-App und allgemeine Bereinigungen. Weitere Informationen finden Sie im CHANGELOG und im Release-Abschnitt.
Wir haben kürzlich ein Update auf die neueste Version durchgeführt und beschlossen, unsere Bibliotheken auf den Hosting-Dienst Jitpack umzustellen. Weitere Einzelheiten finden Sie im Abschnitt „Installation“.
Breaking Change: setFirstDayOfWeek
, setMin/MaxDate
und setCalendarDisplayMode
werden in ein State
Objekt verschoben. Dies war notwendig, da unklar war, dass es sich nicht um einfache Setter handelte – einzeln hatten sie Nebenwirkungen und lösten vollständige Neuberechnungen des Adapters/Datumsbereichs aus. Bei der typischen Verwendung der Ansicht werden alle diese Invarianten vorab während onCreate
festgelegt, und dem Benutzer war nicht bekannt, dass das Festlegen aller vier dieser Invarianten viel Verschwendung verursachen würde. Ganz zu schweigen davon, dass bestimmte Dinge Nebenwirkungen hatten – einige setzten den aktuellen Tag oder das ausgewählte Datum zurück. Infolgedessen könnten dieselben vier Methoden, die in einer anderen Reihenfolge aufgerufen werden, zu einem anderen Zustand führen, was schlecht ist.
In den meisten Fällen müssen Sie die Einstellung dieser Invarianten lediglich durch Folgendes ersetzen:
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()
behält zuvor festgelegte Werte bei; mcv.newState()
erstellt einen neuen Status mit Standardwerten. Durch den Aufruf von commit
wird die Neuerstellung von Adaptern und Datumsbereichen ausgelöst. Es wird empfohlen, diese Statusänderungen als erste Änderung am MCV vorzunehmen (bevor Sie etwas anderes wie das aktuelle Datum oder das ausgewählte Datum konfigurieren). Wir übernehmen keine Garantie dafür, dass diese Änderungen beibehalten werden, wenn der Status geändert wird.
Einzelheiten zur Verwendung finden Sie unter CUSTOMIZATION_BUILDER.
Neu: setSelectionMode(SELECTION_MODE_RANGE)
wurde hinzugefügt, um die Auswahl von 2 Daten und die Auswahl des gesamten Datumsbereichs zu ermöglichen. Vielen Dank an Papageorgiouk für seine Arbeit an diesem Feature.
Weitere Änderungen finden Sie im CHANGELOG.
Möchten Sie einen Beitrag leisten? Forken Sie uns und senden Sie eine Pull-Anfrage! Schauen Sie sich unbedingt zuerst unsere Probleme an.
Die Materialkalenderansicht unterliegt dem Copyright (c) 2018 von Prolific Interactive. Es kann unter den in der LIZENZ-Datei angegebenen Bedingungen weitergegeben werden.
Die Materialkalenderansicht wird von Prolific Interactive verwaltet und finanziert. Die Namen und Logos sind Marken von Prolific Interactive.