Port belakang desain Material dari CalendarView Android. Tujuannya adalah untuk memiliki tampilan dan nuansa Material, bukan 100% setara dengan implementasi platform.
Langkah 1. Tambahkan repositori JitPack ke file build Anda
allprojects {
repositories {
.. .
maven { url ' https://jitpack.io ' }
}
}
Langkah 2. Tambahkan ketergantungan
dependencies {
implementation ' com.github.prolificinteractive:material-calendarview:${version} '
}
MaterialCalendarView
ke dalam tata letak atau hierarki tampilan Anda.OnDateSelectedListener
atau panggil MaterialCalendarView.getSelectedDates()
saat Anda membutuhkannya.Javadoc Tersedia Di Sini
Contoh:
< 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 "
/>
Pastikan untuk memeriksa semua dokumentasi yang tersedia di sini.
Salah satu tujuan perpustakaan ini adalah untuk dapat disesuaikan. Banyak pilihannya antara lain:
Semua ini dan lebih banyak lagi dapat dilakukan melalui api dekorator. Silakan periksa dokumentasi dekorator.
Material CalendarView 2.0 hadir dengan perubahan besar pada inti API-nya, kami beralih dari penggunaan java.util.Calendar
ke java.time.LocalDate
. Selain itu, hal tersebut tidak akan berdampak pada api publik (kami masih menggunakan CalendarDay
), fungsi Calendar
dan LocalDate
sedikit berbeda. Salah satu contohnya: Bulan kini diindeks dari 1 (Januari) hingga 12 (Desember). Anda dapat mengakses dari LocalDate
dari CalendarDay
menggunakan getDate()
.
Rilis ini juga tidak memiliki perubahan jeda apa pun, namun memberikan peningkatan signifikan pada widget. Lebih banyak penyesuaian telah ditambahkan untuk pengguna (font khusus, pendengar klik panjang, tampilkan/sembunyikan hari kerja) serta berbagai perbaikan, peningkatan pada aplikasi sampel, dan pembersihan umum. Pastikan untuk memeriksa bagian CHANGELOG dan rilis untuk lebih jelasnya.
Kami baru-baru ini memperbarui ke tingkat terbaru dan memutuskan untuk memindahkan perpustakaan kami ke layanan hosting Jitpack. Silakan merujuk ke bagian instalasi untuk lebih jelasnya.
Perubahan yang Dapat Mengganggu: setFirstDayOfWeek
, setMin/MaxDate
, dan setCalendarDisplayMode
dipindahkan ke objek State
. Hal ini diperlukan karena tidak jelas apakah ini bukan penyetel sederhana--secara individual, hal ini menimbulkan efek samping dan memicu penghitungan ulang adaptor/rentang tanggal penuh. Penggunaan umum dari tampilan ini melibatkan pengaturan semua invarian ini di awal selama onCreate
dan pengguna tidak mengetahui bahwa pengaturan keempat invarian ini akan menghasilkan banyak pemborosan. Belum lagi ada hal-hal tertentu yang memiliki efek samping--beberapa akan mengatur ulang hari ini atau tanggal yang dipilih. Akibatnya, 4 metode yang sama yang dipanggil dalam urutan berbeda dapat menghasilkan keadaan yang berbeda, dan ini buruk.
Untuk sebagian besar kasus, Anda hanya perlu mengganti pengaturan invarian tersebut dengan:
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()
akan mempertahankan nilai yang ditetapkan sebelumnya; mcv.newState()
akan membuat status baru menggunakan nilai default. Memanggil commit
akan memicu pembangunan kembali adaptor dan rentang tanggal. Disarankan agar perubahan status ini terjadi sebagai modifikasi pertama pada MCV (sebelum mengonfigurasi hal lain seperti tanggal saat ini atau tanggal yang dipilih); kami tidak memberikan jaminan bahwa modifikasi tersebut akan dipertahankan ketika status diubah.
Lihat CUSTOMIZATION_BUILDER untuk detail penggunaan.
Baru: setSelectionMode(SELECTION_MODE_RANGE)
ditambahkan untuk memungkinkan 2 tanggal dipilih dan seluruh rentang tanggal dipilih. Terima kasih banyak kepada papageorgiouk atas karyanya pada fitur ini.
Lihat perubahan lainnya di CHANGELOG.
Apakah Anda ingin berkontribusi? Garpu kami dan kirim permintaan tarik! Pastikan untuk memeriksa masalah kami terlebih dahulu.
Tampilan Kalender Material adalah Hak Cipta (c) 2018 Prolific Interactive. Ini dapat didistribusikan ulang berdasarkan ketentuan yang ditentukan dalam file LISENSI.
Tampilan Kalender Material dikelola dan didanai oleh Prolific Interactive. Nama dan logo adalah merek dagang dari Prolific Interactive.