Un port arrière de conception matérielle de CalendarView d'Android. L'objectif est d'avoir une apparence et une convivialité Material, plutôt qu'une parité à 100 % avec la mise en œuvre de la plateforme.
Étape 1. Ajoutez le référentiel JitPack à votre fichier de build
allprojects {
repositories {
.. .
maven { url ' https://jitpack.io ' }
}
}
Étape 2. Ajoutez la dépendance
dependencies {
implementation ' com.github.prolificinteractive:material-calendarview:${version} '
}
MaterialCalendarView
dans vos mises en page ou affichez la hiérarchie.OnDateSelectedListener
ou appelez MaterialCalendarView.getSelectedDates()
lorsque vous en avez besoin.Javadoc disponible ici
Exemple:
< 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 "
/>
Assurez-vous de vérifier toute la documentation disponible ici.
L'un des objectifs de cette bibliothèque est d'être personnalisable. Les nombreuses options incluent :
Tout cela et bien plus peut être fait via l’API du décorateur. Veuillez consulter la documentation du décorateur.
Material CalendarView 2.0 apporte un changement majeur au cœur de son API, nous sommes passés de l'utilisation java.util.Calendar
à java.time.LocalDate
. De plus, cela ne devrait pas avoir d'impact sur l'API publique (nous utilisons toujours CalendarDay
), Calendar
et LocalDate
fonctionnent un peu différemment. Un exemple : les mois sont désormais indexés du 1 (janvier) au 12 (décembre). Vous pouvez accéder depuis LocalDate
depuis CalendarDay
en utilisant getDate()
.
De plus, cette version ne comporte aucune modification majeure, elle apporte des améliorations significatives au widget. Plus de personnalisation a été ajoutée pour l'utilisateur (polices personnalisées, écouteur de clics longs, afficher/masquer les jours de la semaine), ainsi que divers correctifs, améliorations de l'exemple d'application et nettoyage général. Assurez-vous de consulter le CHANGELOG et la section release pour plus de détails.
Nous avons récemment mis à jour vers la dernière version et avons décidé de déplacer nos bibliothèques vers le service d'hébergement Jitpack. Veuillez vous référer à la section d'installation pour plus de détails.
Changement radical : setFirstDayOfWeek
, setMin/MaxDate
et setCalendarDisplayMode
sont déplacés vers un objet State
. Cela était nécessaire car il n'était pas clair qu'il ne s'agissait pas de simples paramètres : individuellement, ils avaient des effets secondaires et déclenchaient des recalculs complets de l'adaptateur/de la plage de dates. L'utilisation typique de la vue implique la définition de tous ces invariants à l'avance lors onCreate
et l'utilisateur ne savait pas que la définition de ces 4 créerait beaucoup de gaspillage. Sans oublier que certaines choses avaient des effets secondaires : certaines réinitialisaient le jour en cours ou la date sélectionnée. Par conséquent, les mêmes 4 méthodes appelées dans un ordre différent pourraient entraîner un état différent, ce qui est mauvais.
Dans la plupart des cas, vous devrez simplement remplacer la définition de ces invariants par :
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()
conservera les valeurs précédemment définies ; mcv.newState()
créera un nouvel état en utilisant les valeurs par défaut. L’appel de commit
déclenchera la reconstruction des adaptateurs et des plages de dates. Il est recommandé que ces changements d'état se produisent lors de la première modification de MCV (avant de configurer autre chose comme la date actuelle ou la date sélectionnée) ; nous ne garantissons pas que ces modifications seront conservées lorsque l'état sera modifié.
Voir CUSTOMIZATION_BUILDER pour plus de détails sur l'utilisation.
Nouveau : setSelectionMode(SELECTION_MODE_RANGE)
a été ajouté pour permettre de sélectionner 2 dates et de sélectionner toute la plage de dates. Un grand merci à Papageorgiouk pour son travail sur cette fonctionnalité.
Voir les autres changements dans le CHANGELOG.
Souhaitez-vous contribuer? Forkez-nous et envoyez une pull request ! Assurez-vous de consulter nos problèmes en premier.
La vue du calendrier matériel est protégée par copyright (c) 2018 Prolific Interactive. Il peut être redistribué dans les conditions précisées dans le fichier LICENCE.
Material Calendar View est géré et financé par Prolific Interactive. Les noms et logos sont des marques déposées de Prolific Interactive.