Uma versão traseira do Material Design do CalendarView do Android. O objetivo é ter uma aparência material, em vez de 100% de paridade com a implementação da plataforma.
Etapa 1. Adicione o repositório JitPack ao seu arquivo de construção
allprojects {
repositories {
.. .
maven { url ' https://jitpack.io ' }
}
}
Passo 2. Adicione a dependência
dependencies {
implementation ' com.github.prolificinteractive:material-calendarview:${version} '
}
MaterialCalendarView
aos seus layouts ou visualize a hierarquia.OnDateSelectedListener
ou chame MaterialCalendarView.getSelectedDates()
quando precisar.Javadoc disponível aqui
Exemplo:
< 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 "
/>
Certifique-se de verificar toda a documentação disponível aqui.
Um dos objetivos desta biblioteca é ser personalizável. As muitas opções incluem:
Tudo isso e muito mais pode ser feito através da API do decorador. Por favor, verifique a documentação do decorador.
O Material CalendarView 2.0 chega com uma grande mudança no núcleo de sua API, fizemos a transição do uso de java.util.Calendar
para java.time.LocalDate
. Além disso, isso não deve impactar a API pública (ainda estamos usando CalendarDay
), tanto Calendar
quanto LocalDate
funcionam de maneira um pouco diferente. Um exemplo disso: os meses agora são indexados de 1 (janeiro) a 12 (dezembro). Você pode acessar a partir do LocalDate
de CalendarDay
usando getDate()
.
Além disso, esta versão não possui nenhuma alteração de interrupção, ela fornece melhorias significativas ao widget. Mais personalização foi adicionada para o usuário (fontes personalizadas, ouvinte de clique longo, mostrar/ocultar dias da semana), bem como várias correções, melhorias no aplicativo de amostra e limpeza geral. Certifique-se de verificar o CHANGELOG e a seção de lançamento para mais detalhes.
Recentemente, atualizamos para o gradle mais recente e decidimos migrar nossas bibliotecas para o serviço de hospedagem Jitpack. Consulte a seção de instalação para obter mais detalhes.
Alteração significativa: setFirstDayOfWeek
, setMin/MaxDate
e setCalendarDisplayMode
são movidos para um objeto State
. Isso foi necessário porque não estava claro se esses não eram configuradores simples - individualmente, eles tinham efeitos colaterais e acionavam recálculos completos do adaptador/intervalo de datas. O uso típico da visualização envolve definir todos esses invariantes antecipadamente durante onCreate
e o usuário não sabia que definir todos esses quatro criaria muito desperdício. Sem mencionar que certas coisas tiveram efeitos colaterais - algumas redefiniriam o dia atual ou a data selecionada. Como resultado, os mesmos 4 métodos chamados em ordem diferente podem resultar em um estado diferente, o que é ruim.
Na maioria dos casos, você simplesmente precisará substituir a configuração desses invariantes por:
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()
manterá os valores definidos anteriormente; mcv.newState()
criará um novo estado usando valores padrão. Chamar commit
acionará a reconstrução de adaptadores e intervalos de datas. Recomenda-se que essas alterações de estado ocorram como a primeira modificação no MCV (antes de configurar qualquer outra coisa, como data atual ou data selecionada); não garantimos que essas modificações serão mantidas quando o estado for modificado.
Consulte CUSTOMIZATION_BUILDER para obter detalhes de uso.
Novo: setSelectionMode(SELECTION_MODE_RANGE)
foi adicionado para permitir que 2 datas sejam selecionadas e ter todo o intervalo de datas selecionado. Muito obrigado a papageorgiouk pelo seu trabalho neste artigo.
Veja outras mudanças no CHANGELOG.
Você gostaria de contribuir? Bifurque-nos e envie uma solicitação de pull! Certifique-se de verificar nossos problemas primeiro.
A visualização do calendário de materiais é protegida por Copyright (c) 2018 Prolific Interactive. Pode ser redistribuído sob os termos especificados no arquivo LICENSE.
Material Calendar View é mantido e financiado pela Prolific Interactive. Os nomes e logotipos são marcas registradas da Prolific Interactive.