ViewPager2

عرض المشاهدات أو الأجزاء بتنسيق قابل للتمرير السريع
آخر تعديل الإصدار الثابت إصدار محتمل الإصدار التجريبي الإصدار التجريبي الأول
14 مايو 2024 1.1.0 - - -

التبعيات في AndroidX

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

Groovy

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 على إصدارات واجهة برمجة التطبيقات القديمة (< 30) التي يمكن أن تمنع استخدام العناصر المضمّنة في العروض الإعلانية الشقيقة، عليك تفعيل هذا الإصلاح من خلال WindowInsetsApplier.install(viewPager2) إذا كنت تريد تطبيق العناصر المضمّنة على الأجهزة التي تعمل بإصدار أقدم من 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 على هذه المراجعات.

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

  • تمت إضافة وظائف الاستدعاء لحفظ حالة المقتطف إلى 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)
  • تم إصلاح مشكلة في 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. يمكن العثور على عمليات الربط المضمّنة في هذا الإصدار هنا.

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

  • تمت إزالة الاعتمادية غير المقصودة التي تم إجراؤها في 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 بعد حلّ مشكلة تغيير مجموعة البيانات أو المحوِّل
  • تم حلّ المشكلة offscreenPageLimit في MarginPageTransformer.
  • تم إصلاح إجراءات تسهيل الاستخدام أثناء العمل في سلوك 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):
    • إتاحة التنسيق من اليمين إلى اليسار
    • دعم الاتجاه العمودي
    • notifyDataSetChanged تعمل بشكل كامل (تم حلّ أخطاء VP1)

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

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

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

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