صفحة العرض 2
التعديل الأخير | الإصدار المستقر | إصدار مرشح | الإصدار التجريبي | إصدار ألفا |
---|---|---|---|---|
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
إلى إصدارات واجهة برمجة التطبيقات القديمة (< 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
تحسينات في الثبات أو الأداء قريبًا.