Un puerto posterior de Material design de CalendarView de Android. El objetivo es tener una apariencia Material, en lugar de una paridad del 100% con la implementación de la plataforma.
Paso 1. Agrega el repositorio JitPack a tu archivo de compilación
allprojects {
repositories {
.. .
maven { url ' https://jitpack.io ' }
}
}
Paso 2. Agrega la dependencia
dependencies {
implementation ' com.github.prolificinteractive:material-calendarview:${version} '
}
MaterialCalendarView
a sus diseños o vea la jerarquía.OnDateSelectedListener
o llame MaterialCalendarView.getSelectedDates()
cuando lo necesite.Javadoc disponible aquí
Ejemplo:
< 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 "
/>
Asegúrate de consultar toda la documentación disponible aquí.
Uno de los objetivos de esta biblioteca es ser personalizable. Las muchas opciones incluyen:
Todo esto y más se puede hacer a través de la API del decorador. Consulte la documentación del decorador.
Material CalendarView 2.0 llega con un cambio importante en el núcleo de su API: pasamos del uso de java.util.Calendar
a java.time.LocalDate
. Además, eso no debería afectar la API pública (todavía usamos CalendarDay
), tanto Calendar
como LocalDate
funcionan de manera un poco diferente. Un ejemplo de ello: los meses ahora están indexados del 1 (enero) al 12 (diciembre). Puede acceder desde LocalDate
desde CalendarDay
usando getDate()
.
Además, esta versión no tiene cambios importantes y proporciona mejoras significativas en el widget. Se han agregado más personalizaciones para el usuario (fuentes personalizadas, escucha de clics prolongados, mostrar/ocultar días laborables), así como varias correcciones, mejoras a la aplicación de muestra y limpieza general. Asegúrese de consultar el REGISTRO DE CAMBIOS y la sección de lanzamiento para obtener más detalles.
Recientemente actualizamos a la última versión de Gradle y decidimos trasladar nuestras bibliotecas al servicio de alojamiento Jitpack. Consulte la sección de instalación para obtener más detalles.
Cambio importante: setFirstDayOfWeek
, setMin/MaxDate
y setCalendarDisplayMode
se mueven a un objeto State
. Esto era necesario porque no estaba claro que no se tratara de simples configuradores; individualmente, tenían efectos secundarios y activaban nuevos cálculos completos del adaptador/intervalo de fechas. El uso típico de la vista implica configurar todas estas invariantes por adelantado durante onCreate
y el usuario no sabía que configurar las 4 crearía una gran cantidad de desperdicio. Sin mencionar que ciertas cosas tenían efectos secundarios: algunas restablecerían el día actual o la fecha seleccionada. Como resultado, los mismos 4 métodos llamados en un orden diferente podrían dar como resultado un estado diferente, lo cual es malo.
En la mayoría de los casos, simplemente necesitarás reemplazar la configuración de esas invariantes con:
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()
conservará los valores establecidos previamente; mcv.newState()
creará un nuevo estado utilizando valores predeterminados. Llamar commit
activará la reconstrucción de adaptadores y rangos de fechas. Se recomienda que estos cambios de estado ocurran como la primera modificación de MCV (antes de configurar cualquier otra cosa, como la fecha actual o la fecha seleccionada); No ofrecemos ninguna garantía de que esas modificaciones se conservarán cuando se modifique el estado.
Consulte CUSTOMIZATION_BUILDER para obtener detalles de uso.
Nuevo: se agregó setSelectionMode(SELECTION_MODE_RANGE)
para permitir seleccionar 2 fechas y tener seleccionado todo el rango de fechas. Muchas gracias a papageorgiouk por su trabajo en este artículo.
Vea otros cambios en el CHANGELOG.
¿Quieres contribuir? ¡Bifurquenos y envíe una solicitud de extracción! Asegúrese de revisar nuestros problemas primero.
La vista de calendario de materiales tiene derechos de autor (c) 2018 Prolific Interactive. Podrá ser redistribuido en los términos especificados en el fichero de LICENCIA.
La vista de calendario de materiales es mantenida y financiada por Prolific Interactive. Los nombres y logotipos son marcas comerciales de Prolific Interactive.