ดูเพจเจอร์ 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 ที่ RecyclerView 1.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: เอกสารประกอบสำหรับ positionfixed

แก้ไขข้อบกพร่อง

  • 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 การปรับปรุงความเสถียร / ประสิทธิภาพที่กําลังจะมีขึ้น