ดูเพจเจอร์ 2
อัปเดตล่าสุด | รุ่นที่เสถียร | รุ่นที่อาจได้รับการเผยแพร่ | รุ่นเบต้า | เวอร์ชันอัลฟ่า |
---|---|---|---|---|
14 พฤษภาคม 2024 | 1.1.0 | - | - | - |
Dependency ของ AndroidX
หากต้องการใช้ ViewPager2
ให้เพิ่มการพึ่งพา AndroidX ต่อไปนี้ลงในไฟล์ build.gradle
ของโปรเจ็กต์
ดึงดูด
dependencies { implementation "androidx.viewpager2:viewpager2:1.1.0" }
Kotlin
dependencies { implementation("androidx.viewpager2:viewpager2:1.1.0") }
ความคิดเห็น
ความคิดเห็นของคุณช่วยปรับปรุง Jetpack ได้ โปรดแจ้งให้เราทราบหากคุณพบปัญหาใหม่ๆ หรือมีแนวคิดในการปรับปรุงไลบรารีนี้ โปรดดูปัญหาที่มีอยู่ในคลังนี้ก่อนสร้างปัญหาใหม่ คุณสามารถเพิ่มการโหวตลงในปัญหาที่มีอยู่ โดยคลิกปุ่มดาว
ดูข้อมูลเพิ่มเติมในเอกสารประกอบของเครื่องมือติดตามปัญหา
เวอร์ชัน 1.1.0
เวอร์ชัน 1.1.0
14 พฤษภาคม 2024
ปล่อย androidx.viewpager2:viewpager2:1.1.0
แล้ว เวอร์ชัน 1.1.0 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลงที่สําคัญตั้งแต่เวอร์ชัน 1.0.0
- แก้ไขข้อขัดข้องเมื่อใช้กับ RecyclerView
1.3.1-rc01
ขึ้นไป - ตอนนี้
ViewPager2
จะป้อนข้อมูลCollectionInfo
และCollectionItemInfo
ที่ RecyclerView1.2.0-alpha02
ขึ้นไปไม่ป้อนข้อมูลโดยค่าเริ่มต้นอีกต่อไป - เพิ่มอินเทอร์เฟซ
FragmentTransactionCallback
สําหรับการฟังการเปลี่ยนแปลงวงจรชีวิตของข้อมูลโค้ดที่จะเกิดขึ้นภายในFragmentStateAdapter
- แก้ไขปัญหา
FragmentStateAdapter
เกี่ยวกับการมองเห็นเมนูรายการแรกเมื่อเพิ่มรายการย่อยลงในFragmentManager
- แก้ไขการส่งข้อมูลส่วนแทรกของหน้าต่าง: ตอนนี้ทุกหน้าจะมีส่วนแทรกเดียวกัน เนื่องจากวิธีการส่ง
WindowInsets
ใน API เวอร์ชันเก่า (< API 30) อาจทําให้วิวสําคัญใช้ส่วนตัดไม่สะดวก คุณจึงต้องเลือกใช้การแก้ไขนี้ผ่านWindowInsetsApplier.install(viewPager2)
หากต้องการใช้ส่วนตัดในอุปกรณ์ < API 30
เวอร์ชัน 1.1.0-rc01
1 พฤษภาคม 2024
androidx.viewpager2:viewpager2:1.1.0-rc01
ได้รับการเผยแพร่โดยไม่มีการเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.1.0-beta02 เวอร์ชัน 1.1.0-rc01 มีการคอมมิตเหล่านี้
เวอร์ชัน 1.1.0-beta02
24 พฤษภาคม 2023
androidx.viewpager2:viewpager2:1.1.0-beta02
ได้รับการปล่อยแล้ว เวอร์ชัน 1.1.0-beta02 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม Callback ที่บันทึกสถานะ Fragment ไปยัง
FragmentTransactionCallback
แล้ว (I45b90) - ตอนนี้
ViewPager2
จะไม่พยายามแก้ไขการส่งWindowInsets
ของ API เวอร์ชันเก่า (< 30) ที่ใช้งานไม่ได้อีกต่อไป เนื่องจากการแก้ไขอาจส่งผลเสียต่อรายการอื่นๆ ของViewPager2
การแก้ไขยังคงใช้งานได้ แต่จะเป็นแบบเลือกใช้เพื่อให้นักพัฒนาแอปตัดสินใจเป็นกรณีไป เปิดการแก้ไขโดยโทรหาWindowInsetsApplier.install(viewPager2))
(Ic9a85)
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหาความเข้ากันได้กับ
RecyclerView
เวอร์ชันใหม่ ผู้ใช้ViewPager2
เวอร์ชันนี้ควรอัปเดตเป็นRecyclerView
1.3.1-rc01 เป็นอย่างน้อย
เวอร์ชัน 1.1.0-beta01
4 สิงหาคม 2021
ปล่อย androidx.viewpager2:viewpager2:1.1.0-beta01
แล้ว เวอร์ชัน 1.1.0-beta01 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
อัปเกรด androidx เพื่อใช้ Kotlin 1.4 (Id6471, b/165307851, b/165300826)
เปลี่ยนไปกำหนดเป้าหมายเป็น Java 8 สำหรับไลบรารี androidx ทั้งหมด (2923f39)
แก้ไขข้อบกพร่อง
- แก้ไขการส่งข้อมูลส่วนแทรกของหน้าต่าง ตอนนี้ทุกหน้าจะมีส่วนแทรกเหมือนกัน (I47fef)
เวอร์ชัน 1.1.0-alpha01
1 เมษายน 2020
androidx.viewpager2:viewpager2:1.1.0-alpha01
ได้รับการปล่อยแล้ว เวอร์ชัน 1.1.0-alpha01 มีคอมมิตเหล่านี้
เวอร์ชันนี้มาพร้อมกับการเปลี่ยนแปลงใน RecyclerView 1.2.0-alpha02 โดยการป้อนข้อมูล CollectionInfo
และ CollectionItemInfo
ที่ RecyclerView
ไม่ได้ให้ไว้โดยค่าเริ่มต้นอีกต่อไป เมื่ออัปเดตเป็น RecyclerView 1.2.0-alpha02
ให้อัปเดต ViewPager2
ด้วยเพื่อป้องกันการถดถอยของการช่วยเหลือพิเศษ
ฟีเจอร์ใหม่
- เพิ่มอินเทอร์เฟซ
FragmentTransactionCallback
สําหรับการฟังการเปลี่ยนแปลงวงจรชีวิตของข้อมูลโค้ดที่จะเกิดขึ้นภายในFragmentStateAdapter
(Ibda77)
การแก้ไขข้อบกพร่อง
- แก้ไขปัญหา
FragmentStateAdapter
เกี่ยวกับการมองเห็นเมนูรายการแรกเมื่อเพิ่มรายการย่อยลงในFragmentManager
(I9d2ff, b/144442240)
เวอร์ชัน 1.0.0
เวอร์ชัน 1.0.0
20 พฤศจิกายน 2019
androidx.viewpager2:viewpager2:1.0.0
เปิดตัวโดยไม่มีการเปลี่ยนแปลงจาก 1.0.0-rc01 เวอร์ชัน 1.0.0 มีคอมมิตเหล่านี้
ฟีเจอร์หลักของ 1.0.0
- การปรับปรุงจากการใช้งาน ViewPager เวอร์ชันเก่า
- การรองรับเลย์เอาต์ RTL (จากขวาไปซ้าย)
- รองรับการวางในแนวตั้ง
- การสนับสนุน
Fragment
ที่เชื่อถือได้ (รวมถึงการจัดการการเปลี่ยนแปลงในคอลเล็กชันFragment
ที่เกี่ยวข้อง) - ภาพเคลื่อนไหวการเปลี่ยนแปลงชุดข้อมูล (รวมถึงการรองรับ
DiffUtil
)
- ย้ายข้อมูลจากการติดตั้งใช้งาน
ViewPager
ก่อนหน้านี้ได้ง่ายๆ (API ทำงานร่วมกันได้หากเป็นไปได้) โปรดดูคำแนะนำในการย้ายข้อมูลและแอปตัวอย่าง
ดูคำแนะนำเกี่ยวกับการใช้ ViewPager2 เพื่อเลื่อนไปมาระหว่างส่วนย่อย
เวอร์ชัน 1.0.0-rc01
23 ตุลาคม 2019
androidx.viewpager2:viewpager2:1.0.0-rc01
เผยแพร่โดยไม่มีการเปลี่ยนแปลงนับตั้งแต่ 1.0.0-beta05
เวอร์ชัน 1.0.0-rc01 มีคอมมิตเหล่านี้
เวอร์ชัน 1.0.0-beta05
9 ตุลาคม 2019
androidx.viewpager2:viewpager2:1.0.0-beta05
ได้รับการปล่อยแล้ว เวอร์ชัน 1.0.0-beta05 มีการคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- แก้ไข
requestFocus
ในหน้าเว็บที่อยู่นอกหน้าจอซึ่งทําให้หน้าเว็บเปลี่ยนแปลง ตอนนี้ลักษณะการทำงานจะสอดคล้องกับ ViewPager เดิมแล้ว (b/140656866) - แก้ไข
focus
ที่เหลืออยู่ในหน้านอกหน้าจอหลังจากการเปลี่ยนแปลงหน้า ตอนนี้ระบบจะล้างโฟกัสเมื่อเปลี่ยนหน้า (b/140656866) - แก้ไขการเรียงลำดับ
Fragment
หยุดชั่วคราว / ดำเนินธุรกรรมต่อเมื่อเปลี่ยนหน้า (ตอนนี้เราจะหยุดรายการหลักเดิมไว้ชั่วคราวทุกครั้งก่อนที่จะกลับมาแสดงรายการใหม่) (b/139489059) - แก้ไขสำหรับ
canScrollHorizontally(int)
และcanScrollVertically(int)
- ตอนนี้จะแสดงผลว่า ViewPager2 เลื่อนไปในทิศทางที่ระบุได้หรือไม่ (b/141848404) - ปัญหาใน SwipeRefreshLayout ได้รับการแก้ไขให้ทำงานร่วมกับ ViewPager2 ได้ดียิ่งขึ้น
เวอร์ชัน 1.0.0-beta04
5 กันยายน 2019
androidx.viewpager2:viewpager2:1.0.0-beta04
ได้รับการปล่อยแล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่
แก้ไขข้อบกพร่อง
- แก้ไข
FragmentStateAdapter
ปัญหาที่เกิดขึ้นในบางกรณีเกี่ยวกับกองซ้อนของปุ่มย้อนกลับFragment
(b/139095195) - แก้ไขสำหรับ
EditText
ที่มีการกำหนดค่าแอตทริบิวต์บางอย่างซึ่งทําให้ระบบเลื่อน/ข้ามหน้าเมื่อพิมพ์/โฟกัส (b/138044582, b/139432498) - แก้ไขข้อบกพร่องเกี่ยวกับอินสแตนซ์
ItemDecoration
และวิธีแก้ปัญหาสำหรับตําแหน่งตัวบ่งชี้การเลื่อนผ่าน (b/139012032) - เราได้แก้ไขปัญหาหลายอย่างในคอมโพเนนต์อื่นๆ เพื่อให้ทำงานร่วมกับ
ViewPager2
ได้ดียิ่งขึ้น ได้แก่ RecyclerView, NestedScrollView และ Navigation
เวอร์ชัน 1.0.0-beta03
7 สิงหาคม 2019
androidx.viewpager2:viewpager2:1.0.0-beta03
ได้รับการปล่อยแล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่
แก้ไขข้อบกพร่อง
- แก้ไข
FragmentStateAdapter
ปัญหาเกี่ยวกับสถานะFragment
ชั่วคราว b/134246546 - แก้ไขปัญหา
currentItem
และscrollState
เมื่อชุดข้อมูลมีการเปลี่ยนแปลงระหว่างการเลื่อนอย่างราบรื่น (เคสขอรับความช่วยเหลือด้านข้าง) b/137642608 - แก้ไขภาพเคลื่อนไหวของ
PageTransformer
(รวมถึงMarginPageTransformer
) ที่ขัดแย้งกับภาพเคลื่อนไหวของการเปลี่ยนแปลงชุดข้อมูล b/134658996 - แก้ไขภาพเคลื่อนไหวการเลื่อนที่ราบรื่นในชุดข้อมูลขนาดใหญ่ (
float
ค่าจำนวนเต็มสูงสุด) b/134858960
เวอร์ชัน 1.0.0-beta02
19 กรกฎาคม 2019
androidx.viewpager2:viewpager2:1.0.0-beta02
ได้รับการปล่อยแล้ว คุณสามารถดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่
แก้ไขข้อบกพร่อง
- นำการพึ่งพา jacoco ที่ไม่ตั้งใจซึ่งเปิดตัวใน
1.0.0-beta01
ออก (b/137782951)
เวอร์ชัน 1.0.0-beta01
17 กรกฎาคม 2019
androidx.viewpager2:viewpager2:1.0.0-beta01
ได้รับการปล่อยแล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่
แก้ไขข้อบกพร่อง
- แก้ไขข้อขัดข้องของ
ViewPager2.updateCurrentItem
ขณะเลื่อนและอัปเดตชุดข้อมูล - แก้ไขข้อขัดข้องของ
NullPointerException
ที่เกี่ยวข้องกับViewPager2.isLayoutRtl
TOUCH_SLOP_PAGING
เป็นค่าเริ่มต้นของระยะห่างการแตะ- แก้ไขเหตุการณ์
OnPageChangeCallback
สำหรับอะแดปเตอร์ว่าง (หน้า0
แทน-1
เพื่อให้สอดคล้องกับViewPager1
)
ปัญหาที่ทราบ
- เรายังคงแก้ไขปัญหาที่ยังต้องดำเนินการอยู่ก่อนที่จะย้ายไปยังเวอร์ชันเสถียร
เวอร์ชัน 1.0.0-alpha06
2 กรกฎาคม 2019
ปล่อย androidx.viewpager2:viewpager2:1.0.0-alpha06
แล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่
นี่เป็นเวอร์ชันอัลฟ่าที่วางแผนไว้ล่าสุดก่อนที่จะระงับ API และเปลี่ยนเป็นเบต้า โปรดส่งความคิดเห็นเกี่ยวกับ API ถึงเรา
ฟีเจอร์ใหม่
- รากฐานสำหรับการเข้าถึงที่ดีขึ้น:
ACTION_PAGE_RIGHT
,ACTION_PAGE_DOWN
ฯลฯ
การเปลี่ยนแปลง API
FragmentStateAdapter
:Fragment
ที่ไม่ใช่รายการหลักมีการกำหนดไว้ที่STARTED
และmenuVisibility
ได้รับการตั้งค่าเป็น "เท็จ"PageTransformer
,MarginPageTransformer
,CompositePageTransformer
: เอกสารประกอบสำหรับposition
fixed
แก้ไขข้อบกพร่อง
currentItem
หลังจากแก้ไขชุดข้อมูล / การเปลี่ยนแปลงอะแดปเตอร์แล้วMarginPageTransformer
ที่แก้ไขปัญหาoffscreenPageLimit
แล้ว- แก้ไขการช่วยเหลือพิเศษในขณะที่มีลักษณะการทำงานของ
FakeDrag
แล้ว
เวอร์ชัน 1.0.0-alpha05
5 มิถุนายน 2019
androidx.viewpager2:viewpager2:1.0.0-alpha05
ได้รับการปล่อยแล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่
ฟีเจอร์ใหม่
ItemDecorator
เปิดตัวด้วยลักษณะการทำงานที่สอดคล้องกับRecyclerView
MarginPageTransformer
เปิดตัวเพื่อให้สามารถสร้างพื้นที่ระหว่างหน้า (นอกส่วนแทรกของหน้า)CompositePageTransformer
เปิดตัวเพื่อรวมPageTransformer
หลายรายการเข้าด้วยกัน
การเปลี่ยนแปลง API
- เปลี่ยนชื่อเมธอด
FragmentStateAdapter#getItem
เป็นFragmentStateAdapter#createFragment
เนื่องจากชื่อเมธอดก่อนหน้านี้เป็นสาเหตุของข้อบกพร่องในอดีต - มูลค่า
OFFSCREEN_PAGE_LIMIT_DEFAULT
เปลี่ยนจาก0
เป็น-1
ไม่ต้องเปลี่ยนแปลงโค้ดไคลเอ็นต์หากใช้OFFSCREEN_PAGE_LIMIT_DEFAULT
แบบคงที่
แก้ไขข้อบกพร่อง
- แก้ไขลักษณะการทํางานของ
getCurrentItem()
เมื่อSCROLL_STATE_SETTLING
ถูกขัดจังหวะด้วยการลากในทิศทางตรงกันข้าม - ปัญหาเกี่ยวกับตัวโหลดคลาส
FragmentStateAdapter
ที่แก้ไขในบริบท "อย่าเก็บกิจกรรมไว้" - ปรับปรุงเอกสารแล้ว
setOffscreenPageLimit
รายการ
เวอร์ชัน 1.0.0-alpha04
7 พฤษภาคม 2019
ปล่อย androidx.viewpager2:viewpager2:1.0.0-alpha04
แล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่
ฟีเจอร์ใหม่
offscreenPageLimit
: ช่วยให้ควบคุมจำนวนหน้าView
/Fragment
ที่เก็บไว้ในลำดับชั้นการดูได้อย่างสมบูรณ์
การเปลี่ยนแปลง API
- แอตทริบิวต์
orientation
และisUserScrollable
ไม่ได้อยู่ในSavedState
อีกต่อไป - วิธี
saveState
และrestoreState
รายการสิ้นสุดในFragmentStateAdapter
- เปลี่ยนคำอธิบายประกอบของ
ViewPager2.Orientation
และViewPager2.ScrollState
เป็นแบบไม่เป็นสาธารณะ
แก้ไขข้อบกพร่อง
SavedState
: แก้ไขปัญหาการกู้คืนเมื่อActivity
ถูกทำลาย / สร้างใหม่SavedState
: กู้คืนล่าช้าจนกว่าจะมีการตั้งค่าอะแดปเตอร์OnPageChangeCallback
: แก้ไขเคสขอบเล็กน้อยแล้ว
เวอร์ชัน 1.0.0-alpha03
3 เมษายน 2019
androidx.viewpager2:viewpager2:1.0.0-alpha03
ได้รับการปล่อยแล้ว ดูคอมมิตที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่
ฟีเจอร์ใหม่
- ความสามารถในการเลื่อน ViewPager2 แบบเป็นโปรแกรม:
fakeDragBy(offsetPx)
การเปลี่ยนแปลง API
- ตอนนี้
FragmentStateAdapter
ต้องใช้ออบเจ็กต์Lifecycle
เพิ่มเครื่องมือสร้างยูทิลิตี 2 รายการเพื่อรับมาจากโฮสต์FragmentActivity
หรือโฮสต์Fragment
แก้ไขข้อบกพร่อง
- การแก้ไขการรองรับ
Fragment
จำนวนมาก ดังนี้- การจัดการการอัปเดตชุดข้อมูลขณะที่ย่ออยู่หรือระหว่างการหมุนหน้าจอ
- นำเศษที่ไม่เกี่ยวข้องออกหลังจากเปลี่ยนรูปแบบ
- นำสถานะที่บันทึกไว้ของรายการที่นําออก
PageChangeCallback
: แก้ไขการคำนวณระยะห่างของหน้าสำหรับหน้าที่มีระยะขอบ
เวอร์ชัน 1.0.0-alpha02
13 มีนาคม 2019
androidx.viewpager2:viewpager2:1.0.0-alpha02
ได้รับการปล่อยแล้ว ดูรายการคอมมิตทั้งหมดที่รวมอยู่ในเวอร์ชันนี้ได้ที่นี่
ฟีเจอร์ใหม่
- ความสามารถในการปิดใช้ข้อมูลจากผู้ใช้ (
setUserInputEnabled
,isUserInputEnabled
)
การเปลี่ยนแปลง API
- ViewPager2 class final
แก้ไขข้อบกพร่อง
- การแก้ไขความเสถียร
FragmentStateAdapter
รายการ
เวอร์ชัน 1.0.0-alpha01
7 กุมภาพันธ์ 2019
ปล่อย androidx.viewpager2:viewpager2 1.0.0-alpha01
แล้ว นี่เป็นรุ่นแรกของ ViewPager2
ฟีเจอร์ใหม่
- เปรียบเทียบกับ
android.support.v4.view.ViewPager
(VP1) รุ่นก่อนหน้า- การสนับสนุนรูปแบบจากขวาไปซ้าย (RTL)
- การรองรับการวางแนวตั้ง
notifyDataSetChanged
ทำงานได้อย่างสมบูรณ์ (ข้อบกพร่อง VP1 ที่มีการแก้ไข)
การเปลี่ยนแปลง API
FragmentStateAdapter
แทนที่FragmentStatePagerAdapter
RecyclerView.Adapter
แทนที่PagerAdapter
registerOnPageChangeCallback
แทนที่addPageChangeListener
ปัญหาที่ทราบ
- clipToPadding
- ไม่ปลอมแปลง
- JavaDoc
- การเลื่อนที่ฝังไว้ขนานกับการวางแนว
- ไม่มีการควบคุมขีดจำกัดนอกหน้าจอ
- ต้องมีการผสานรวม TabLayout ที่ดียิ่งขึ้น
- ไม่มีตัวกำหนด pageWidth (บังคับ 100%/100%)
- ตัวเปลี่ยนรูปแบบหน้าเว็บ: ไม่มีตัวเลือกเลเยอร์ฮาร์ดแวร์/ซอฟต์แวร์ ไม่มีลำดับการวาดย้อนกลับ
- แสดงรายการปัจจุบันเมื่อแทรกหน้าก่อนหน้าปัจจุบัน
- การไปยังส่วนต่างๆ ด้วยแป้นพิมพ์ต้องได้รับการปรับปรุง
FragmentStateAdapter
การปรับปรุงความเสถียร / ประสิทธิภาพที่กําลังจะมีขึ้น