صفحة العرض 2

عرض طرق العرض أو الأجزاء بتنسيق قابل للتمرير السريع.
التعديل الأخير الإصدار المستقر إصدار مرشح الإصدار التجريبي إصدار ألفا
14 أيار (مايو) 2024 1.1.0 - - -

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

الإصدار 1.1.0-rc01

1 أيار (مايو) 2024

تم طرح androidx.viewpager2:viewpager2:1.1.0-rc01 بدون تغييرات ملحوظة منذ الإصدار 1.1.0 حتى الإصدار التجريبي 02. يحتوي الإصدار 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 إلى RRC01. يتضمّن الإصدار 1.0.0 هذه الالتزامات.

الميزات الرئيسية للإصدار 1.0.0

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

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

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

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

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

  • أسس تحسين إمكانية الوصول: 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

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

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