พอร์ตด้านหลังการออกแบบวัสดุของ CalendarView ของ Android เป้าหมายคือการมีรูปลักษณ์ที่เป็น Material แทนที่จะมีความเท่าเทียมกัน 100% กับการใช้งานแพลตฟอร์ม
ขั้นตอนที่ 1 เพิ่มพื้นที่เก็บข้อมูล JitPack ไปยังไฟล์บิลด์ของคุณ
allprojects {
repositories {
.. .
maven { url ' https://jitpack.io ' }
}
}
ขั้นตอนที่ 2 เพิ่มการพึ่งพา
dependencies {
implementation ' com.github.prolificinteractive:material-calendarview:${version} '
}
MaterialCalendarView
ลงในเลย์เอาต์ของคุณหรือดูลำดับชั้นOnDateSelectedListener
หรือเรียก MaterialCalendarView.getSelectedDates()
เมื่อคุณต้องการJavadoc มีให้ที่นี่
ตัวอย่าง:
< 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 "
/>
อย่าลืมตรวจสอบเอกสารทั้งหมดที่มีอยู่ที่นี่
จุดมุ่งหมายประการหนึ่งของห้องสมุดนี้คือการปรับแต่งได้ ตัวเลือกมากมาย ได้แก่:
ทั้งหมดนี้และอื่นๆ อีกมากมายสามารถทำได้ผ่านมัณฑนากร API โปรดตรวจสอบเอกสารการตกแต่ง
Material CalendarView 2.0 มาพร้อมกับการเปลี่ยนแปลงครั้งใหญ่ในแกนกลางของ API เราเปลี่ยนจากการใช้ java.util.Calendar
เป็น java.time.LocalDate
นอกจากนี้สิ่งนี้ไม่ควรส่งผลกระทบต่อ API สาธารณะ (เรายังคงใช้ CalendarDay
อยู่) ทั้งฟังก์ชั่น Calendar
และ LocalDate
แตกต่างกันเล็กน้อย ตัวอย่างหนึ่ง: ขณะนี้เดือนต่างๆ ได้รับการจัดทำดัชนีตั้งแต่วันที่ 1 (มกราคม) ถึง 12 (ธันวาคม) คุณสามารถเข้าถึงได้จาก LocalDate
จาก CalendarDay
โดยใช้ getDate()
นอกจากนี้รุ่นนี้ไม่มีการเปลี่ยนแปลงช่วงพักใดๆ แต่มีการปรับปรุงวิดเจ็ตที่สำคัญ เพิ่มการปรับแต่งเพิ่มเติมสำหรับผู้ใช้ (แบบอักษรที่กำหนดเอง ฟังการคลิกแบบยาว แสดง/ซ่อนวันธรรมดา) รวมถึงการแก้ไขต่างๆ การปรับปรุงแอปตัวอย่าง และการล้างข้อมูลทั่วไป อย่าลืมตรวจสอบ CHANGELOG และส่วนการเผยแพร่เพื่อดูรายละเอียดเพิ่มเติม
เราเพิ่งอัปเดตเป็น Gradle ล่าสุดและตัดสินใจย้ายไลบรารีของเราไปยังบริการโฮสติ้ง Jitpack โปรดดูส่วนการติดตั้งสำหรับรายละเอียดเพิ่มเติม
การเปลี่ยนแปลงที่ร้ายแรง: setFirstDayOfWeek
, setMin/MaxDate
และ setCalendarDisplayMode
ถูกย้ายไปยังวัตถุ State
นี่เป็นสิ่งจำเป็นเนื่องจากไม่ชัดเจนว่าสิ่งเหล่านี้ไม่ใช่ตัวตั้งค่าแบบง่าย โดยแต่ละตัวมีผลข้างเคียงและทริกเกอร์การคำนวณใหม่ของอะแดปเตอร์/ช่วงวันที่ทั้งหมด การใช้งานมุมมองโดยทั่วไปเกี่ยวข้องกับการตั้งค่าค่าคงที่เหล่านี้ทั้งหมดไว้ข้างหน้าระหว่าง onCreate
และผู้ใช้ไม่ทราบว่าการตั้งค่าทั้ง 4 รายการนี้จะทำให้เกิดการสิ้นเปลืองจำนวนมาก ไม่ต้องพูดถึงบางสิ่งที่มีผลข้างเคียง บางอย่างอาจรีเซ็ตวันปัจจุบันหรือวันที่ที่เลือก ด้วยเหตุนี้ 4 วิธีเดียวกันที่ถูกเรียกในลำดับที่แตกต่างกันอาจส่งผลให้เกิดสถานะที่แตกต่างกันได้ ซึ่งถือว่าไม่ดี
ในกรณีส่วนใหญ่ คุณจะต้องแทนที่การตั้งค่าคงที่เหล่านั้นด้วย:
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()
จะยังคงค่าที่ตั้งไว้ก่อนหน้านี้; mcv.newState()
จะสร้างสถานะใหม่โดยใช้ค่าเริ่มต้น การเรียก commit
จะทริกเกอร์การสร้างอะแดปเตอร์และช่วงวันที่ขึ้นมาใหม่ ขอแนะนำให้การเปลี่ยนแปลงสถานะเหล่านี้เกิดขึ้นเป็นการแก้ไข MCV ครั้งแรก (ก่อนที่จะกำหนดค่าอย่างอื่น เช่น วันที่ปัจจุบันหรือวันที่ที่เลือก) เราไม่รับประกันว่าการแก้ไขเหล่านั้นจะยังคงอยู่เมื่อมีการแก้ไขสถานะ
ดู CUSTOMIZATION_BUILDER สำหรับรายละเอียดการใช้งาน
ใหม่: เพิ่ม setSelectionMode(SELECTION_MODE_RANGE)
เพื่อให้สามารถเลือกวันที่ได้ 2 วันและเลือกช่วงวันที่ทั้งหมดได้ ขอขอบคุณ papageorgiouk มากสำหรับการทำงานเกี่ยวกับฟีเจอร์นี้
ดูการเปลี่ยนแปลงอื่นๆ ใน CHANGELOG
คุณต้องการมีส่วนร่วมหรือไม่? แยกเราและส่งคำขอดึง! อย่าลืมตรวจสอบปัญหาของเราก่อน
มุมมองปฏิทินวัสดุเป็นลิขสิทธิ์ (c) 2018 Prolific Interactive อาจถูกแจกจ่ายซ้ำภายใต้ข้อกำหนดที่ระบุไว้ในไฟล์ LICENSE
มุมมองปฏิทินวัสดุได้รับการดูแลและได้รับทุนจาก Prolific Interactive ชื่อและโลโก้เป็นเครื่องหมายการค้าของ Prolific Interactive