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. يُرجى إعلامنا إذا اكتشفت مشاكل جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مشكلة جديدة. يمكنك إضافة صوتك إلى مشكلة حالية من خلال النقر على زر النجمة.
يُرجى الاطّلاع على مستندات Issue Tracker للحصول على مزيد من المعلومات.
الإصدار 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 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
- تمت إضافة عمليات رد الاتصال لحفظ حالة Fragment إلى
FragmentTransactionCallback. (I45b90) - لم يعُد
ViewPager2يحاول إصلاح عملية إرسالWindowInsetsالمعطَّلة لإصدارات واجهة برمجة التطبيقات القديمة (أقل من 30)، لأنّ الإصلاح نفسه قد يكون ضارًا بالعناصر المشابهة لـViewPager2. لا يزال الحلّ متاحًا، ولكنّه أصبح يتطلّب الموافقة لكي يتمكّن المطوّرون من اتّخاذ القرار بشأن كل حالة على حدة. فعِّل ميزة "الإصلاح" من خلال الاتصال بالرقمWindowInsetsApplier.install(viewPager2)). (Ic9a85)
إصلاح الأخطاء
- حلّ مشاكل التوافق مع الإصدارات الأحدث من
RecyclerViewعلى مستخدمي هذا الإصدار منViewPager2الترقية إلى الإصدار 1.3.1-rc01 على الأقل.RecyclerView
الإصدار 1.1.0-beta01
4 أغسطس 2021
تم طرح androidx.viewpager2:viewpager2:1.1.0-beta01. يتضمّن الإصدار 1.1.0-beta01 هذه التعديلات.
تغييرات واجهة برمجة التطبيقات
ترقية androidx لاستخدام الإصدار 1.4 من Kotlin (Id6471 وb/165307851 وb/165300826)
الانتقال إلى استهداف الإصدار 8 من Java لجميع مكتبات 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. يمكنك الاطّلاع على التعديلات في هذا الإصدار هنا.
إصلاح الأخطاء
- تمت إزالة تبعية 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على "خطأ". -
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 class final
إصلاح الأخطاء
FragmentStateAdapterإصلاحات الثبات
الإصدار 1.0.0-alpha01
7 فبراير 2019
تم طرح androidx.viewpager2:viewpager2 1.0.0-alpha01. هذا هو الإصدار الأول من ViewPager2.
الميزات الجديدة
- مقارنةً بالإصدار السابق
android.support.v4.view.ViewPager(VP1):- إتاحة التنسيق من اليمين إلى اليسار
- التوافق مع الاتجاه العمودي
notifyDataSetChangedيعمل بكامل وظائفه (تم إصلاح الأخطاء في الإصدار 1 من المنتج)
تغييرات واجهة برمجة التطبيقات
- يحلّ
FragmentStateAdapterمحلّFragmentStatePagerAdapter - يحلّ
RecyclerView.AdapterمحلّPagerAdapter - يحلّ
registerOnPageChangeCallbackمحلّaddPageChangeListener
المشاكل المعروفة
- clipToPadding
- no fakeDrag
- JavaDoc
- التمرير المتداخل الموازي للاتجاه
- لا يتوفّر عنصر تحكّم في الحدّ الأقصى لعدد الأجهزة التي يمكن تشغيل المحتوى عليها في الوقت نفسه
- يجب تحسين عملية دمج TabLayout
- no pageWidth setter (forced 100%/100%)
- محوّل الصفحات: لا يمكن اختيار طبقة الأجهزة/البرامج، ولا يمكن عكس ترتيب الرسم
- إبقاء العنصر الحالي مرئيًا عند إدراج صفحة قبل الصفحة الحالية
- يجب تحسين التنقّل باستخدام لوحة المفاتيح
FragmentStateAdapterتحسينات على الثبات والأداء قادمة