صفحة العرض 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
تحسينات على الثبات أو الأداء.