صفحة العرض 2

عرض طرق العرض أو الأجزاء بتنسيق قابل للتمرير السريع.
آخر تعديل الإصدار المستقر إصدار مرشح الإصدار التجريبي الإصدار الأولي
24 أيار (مايو) 2023 1.0.0 - الإصدار التجريبي 1.1.0-02 -

تبعيات AndroidX

لاستخدام ViewPager2، أضِف تبعية AndroidX التالية إلى ملف build.gradle لمشروعك:

رائع

dependencies {
    implementation "androidx.viewpager2:viewpager2:1.0.0"
}

Kotlin

dependencies {
    implementation("androidx.viewpager2:viewpager2:1.0.0")
}

ملاحظات

تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إخبارنا إذا اكتشفت مشاكل جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مشكلة جديدة. يمكنك إضافة تصويتك إلى مشكلة حالية من خلال النقر على زر النجمة.

إنشاء عدد جديد

راجع مستندات أداة تتبُّع المشاكل للحصول على مزيد من المعلومات.

الإصدار 1.1.0

الإصدار 1.1.0-beta02

24 أيار (مايو) 2023

تم إصدار "androidx.viewpager2:viewpager2:1.1.0-beta02". يتضمّن الإصدار 1.1.0-beta02 هذه الالتزامات.

تغييرات واجهة برمجة التطبيقات

  • تمت إضافة حالة "التجزئة" التي تحفظ عمليات معاودة الاتصال إلى FragmentTransactionCallback. (I45b90)
  • لم يعُد ViewPager2 يحاول إصلاح إرسال WindowInsets المعطّل للإصدارات القديمة من واجهة برمجة التطبيقات (أقل من 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 هذه الالتزامات.

تغييرات واجهة برمجة التطبيقات

  • يجب ترقية 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 السابقة:
    • إتاحة تنسيق من اليمين إلى اليسار (من اليمين إلى اليسار)
    • إتاحة الاتجاه العمودي
    • دعم Fragment موثوق به (بما في ذلك التعامل مع التغييرات التي تطرأ على مجموعة Fragment الأساسية)
    • الصور المتحركة لتغيير مجموعة البيانات (تشمل دعم DiffUtil)
  • نقل البيانات بسهولة من طريقة تنفيذ ViewPager السابقة (تكافؤ واجهة برمجة التطبيقات متى أمكن) يمكنك الاطّلاع على دليل نقل البيانات ونموذج التطبيق.

راجِع دليل استخدام 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)
  • تم إصلاح مشكلة في ScrollتحديثLayout للعمل بشكل أفضل في 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 وNested ScrollView والتنقل.

الإصدار 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". يمكن الاطّلاع هنا على الالتزامات المضمَّنة في هذا الإصدار.

إصلاح الأخطاء

  • تمت إزالة التبعية غير المقصودة لجاكوكو التي تم تقديمها في العام 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". يمكن الاطّلاع هنا على الالتزامات المضمَّنة في هذا الإصدار.

هذه هي آخر نسخة أولية تم التخطيط لها قبل تجميد واجهة برمجة التطبيقات والانتقال إلى الإصدار التجريبي - يُرجى تزويدنا بملاحظاتك بشأن واجهة برمجة التطبيقات.

الميزات الجديدة

  • أساسيات تحسين إمكانية الوصول: ACTION_PAGE_RIGHT وACTION_PAGE_DOWN وما إلى ذلك

التغييرات في واجهة برمجة التطبيقات

  • FragmentStateAdapter: تم تحديد قيمة Fragment للعناصر غير الأساسية على STARTED، وتم ضبط menuVisibility على false.
  • PageTransformer، MarginPageTransformer، CompositePageTransformer: مستندات عن positionتم إصلاحها.

إصلاح الأخطاء

  • currentItem بعد إصلاح تغيير مجموعة البيانات / المحوِّل.
  • MarginPageTransformer مع حل مشكلة واحدة (offscreenPageLimit).
  • تم إصلاح إجراءات تسهيل الاستخدام أثناء إصلاح سلوك "FakeDrag".

الإصدار 1.0.0-alpha05

5 حزيران (يونيو) 2019

تم إصدار "androidx.viewpager2:viewpager2:1.0.0-alpha05". يمكن الاطّلاع هنا على الالتزامات المضمَّنة في هذا الإصدار.

الميزات الجديدة

  • تم تقديم ItemDecorator بسلوك يتوافق مع RecyclerView.
  • تم تقديم MarginPageTransformer لتوفير إمكانية توفير مساحة بين الصفحات (خارج الإطار الداخلي للصفحة).
  • تم تقديم CompositePageTransformer لتوفير إمكانية الجمع بين سمات PageTransformer متعدّدة.

التغييرات في واجهة برمجة التطبيقات

  • تمت إعادة تسمية طريقة 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 التي يتم الاحتفاظ بها في التسلسل الهرمي لطريقة العرض.

التغييرات في واجهة برمجة التطبيقات

  • لم تعُد السمتان 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)

التغييرات في واجهة برمجة التطبيقات

  • تتطلب ميزة "FragmentStateAdapter" الآن العنصر Lifecycle. تمت إضافة أداتين إنشائيتين للأداة للحصول عليها من المضيف FragmentActivity أو المضيف Fragment.

إصلاح الأخطاء

  • العديد من إصلاحات الدعم في Fragment:
    • التعامل مع تعديلات مجموعة البيانات أثناء تصغيرها أو أثناء تدوير الشاشة
    • إزالة الأجزاء غير ذات الصلة بعد التناوب؛
    • إزالة الحالة المحفوظة للعناصر التي تمت إزالتها.
  • PageChangeCallback: حساب إزاحة الصفحة الثابتة للصفحات التي تحتوي على هوامش.

الإصدار 1.0.0-alpha02

13 آذار (مارس) 2019

تم إصدار "androidx.viewpager2:viewpager2:1.0.0-alpha02". يمكن الاطّلاع هنا على القائمة الكاملة لعمليات الالتزام المدرَجة في هذا الإصدار.

الميزات الجديدة

  • إمكانية إيقاف البيانات التي يُدخلها المستخدم (setUserInputEnabled، isUserInputEnabled)

التغييرات في واجهة برمجة التطبيقات

  • نهائي فئة ViewPager2

إصلاح الأخطاء

  • إصلاحان (FragmentStateAdapter) للثبات

الإصدار 1.0.0-alpha01

7 شباط (فبراير) 2019

تم إصدار "androidx.viewpager2:viewpager2 1.0.0-alpha01". هذا هو الإصدار الأول من ViewPager2.

الميزات الجديدة

  • مقارنةً بالإصدار السابق من android.support.v4.view.ViewPager (VP1):
    • إتاحة التنسيق من اليمين إلى اليسار (RTL)
    • إتاحة الاتجاه العمودي
    • notifyDataSetChanged يعمل بشكل كامل (تم معالجة أخطاء VP1)

التغييرات في واجهة برمجة التطبيقات

  • حلّ "FragmentStateAdapter" محلّ "FragmentStatePagerAdapter"
  • حلّ "RecyclerView.Adapter" محلّ "PagerAdapter"
  • حلّ "registerOnPageChangeCallback" محلّ "addPageChangeListener"

المشاكل المعروفة

  • المقاطع المتروكة
  • بدون زائفة
  • مستند JavaDoc
  • تمرير متداخل موازٍ للاتجاه
  • عنصر التحكّم في عدم وضع الحدّ الأقصى خارج الشاشة
  • يحتاج إلى تكامل أفضل مع TabLayout
  • عدم تحديد عرض الصفحة (يتم فرض 100%/100%)
  • محوّل الصفحة: بدون اختيار لطبقة الأجهزة/البرامج، لا يوجد ترتيب رسم عكسي
  • إبقاء العنصر الحالي مرئيًا عند إدراج صفحة قبل التاريخ الحالي
  • إنّ التنقّل باستخدام لوحة المفاتيح يتطلّب بعض التعديلات
  • سيتم قريبًا إجراء FragmentStateAdapter تحسينات على الثبات أو الأداء.