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بشكل صحيح، علمًا بأنّ RecyclerView1.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الترقية إلى الإصدارRecyclerView1.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: تم حلّ مشكلة في الاستعادة عند حذف / إعادة إنشاءActivitySavedState: استعادة البيانات بعد فترة إلى أن يتم ضبط المحوِّل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يحل محلFragmentStatePagerAdapterRecyclerView.Adapterيحلّ محلّPagerAdapterregisterOnPageChangeCallbackيحلّ محلّaddPageChangeListener
المشاكل المعروفة
- clipToPadding
- no fakeDrag
- JavaDoc
- التمرير المُدمَج بشكل موازٍ للاتجاه
- لا يمكن التحكّم في الحد الأقصى للمحتوى الذي يظهر خارج الشاشة.
- يجب دمج TabLayout بشكل أفضل
- لا يتوفّر مُعدِّل لعرض الصفحة (يتم فرض 100%/100%)
- محوِّل الصفحة: لا يتوفّر خيار لطبقة الأجهزة/البرامج، ولا يتوفّر ترتيب رسم عكسي
- إبقاء العنصر الحالي مرئيًا عند إدراج صفحة قبل العنصر الحالي
- يجب تحسين ميزة التنقّل باستخدام لوحة المفاتيح
- سيتم إدخال
FragmentStateAdapterتحسينات على الثبات والأداء