ویو پیجر۲
| آخرین بهروزرسانی | انتشار پایدار | کاندیدای انتشار | انتشار بتا | انتشار آلفا |
|---|---|---|---|---|
| ۱۴ مه ۲۰۲۴ | ۱.۱.۰ | - | - | - |
وابستگیهای اندروید ایکس
برای استفاده از ViewPager2 ، وابستگی AndroidX زیر را به فایل build.gradle پروژه خود اضافه کنید:
شیار
dependencies { implementation "androidx.viewpager2:viewpager2:1.1.0" }
کاتلین
dependencies { implementation("androidx.viewpager2:viewpager2:1.1.0") }
بازخورد
بازخورد شما به بهبود Jetpack کمک میکند. اگر مشکلات جدیدی کشف کردید یا ایدههایی برای بهبود این کتابخانه دارید، به ما اطلاع دهید. لطفاً قبل از ایجاد یک کتابخانه جدید، نگاهی به مشکلات موجود در این کتابخانه بیندازید. میتوانید با کلیک بر روی دکمه ستاره، رأی خود را به یک مشکل موجود اضافه کنید.
برای اطلاعات بیشتر به مستندات ردیاب مشکل مراجعه کنید.
نسخه ۱.۱.۰
نسخه ۱.۱.۰
۱۴ مه ۲۰۲۴
androidx.viewpager2:viewpager2:1.1.0 منتشر شد. نسخه ۱.۱.۰ شامل این کامیتها است.
تغییرات مهم از زمان ۱.۰.۰
- رفع مشکل کرش کردن هنگام استفاده با RecyclerView
1.3.1-rc01یا بالاتر. -
ViewPager2اکنونCollectionInfoوCollectionItemInfoرا که RecyclerView1.2.0-alpha02و بالاتر دیگر به طور پیشفرض ذخیره نمیکنند، به درستی پر میکند. - رابط
FragmentTransactionCallbackبرای گوش دادن به تغییرات چرخه حیات قطعه که درونFragmentStateAdapterاتفاق میافتد، اضافه شد. - مشکل
FragmentStateAdapterبا نمایش اولیه منوی قطعه هنگام اضافه کردن یک قطعه بهFragmentManagerبرطرف شد. - رفع مشکل ارسال insetهای پنجره: اکنون همه صفحات insetهای یکسانی دریافت میکنند. با توجه به نحوه ارسال
WindowInsetsدر نسخههای قدیمی API (<API 30) که میتواند مانع از در دسترس بودن insetها برای نماهای همزاد شود، اگر میخواهید insetها را در دستگاههای <API 30 اعمال کنید، باید از طریقWindowInsetsApplier.install(viewPager2)این مشکل را برطرف کنید.
نسخه ۱.۱.۰-rc01
۱ مه ۲۰۲۴
androidx.viewpager2:viewpager2:1.1.0-rc01 بدون هیچ تغییر قابل توجهی از زمان انتشار نسخه ۱.۱.۰-beta02 منتشر شده است. نسخه ۱.۱.۰-rc01 شامل این کامیتها است.
نسخه ۱.۱.۰-بتا۰۲
۲۴ مه ۲۰۲۳
androidx.viewpager2:viewpager2:1.1.0-beta02 منتشر شد. نسخه 1.1.0-beta02 شامل این کامیتها است.
تغییرات API
- فراخوانیهای ذخیره وضعیت قطعه به
FragmentTransactionCallbackاضافه شد. ( I45b90 ) -
ViewPager2اکنون دیگر سعی در رفع مشکل ارسالWindowInsetsناقص نسخههای قدیمی API (<30) ندارد، زیرا خود این رفع مشکل میتواند برای نسخههای مشابهViewPager2مضر باشد. این رفع مشکل هنوز در دسترس است، اما به یک گزینه اختیاری تبدیل شده است تا توسعهدهندگان بتوانند مورد به مورد تصمیم بگیرند. با فراخوانیWindowInsetsApplier.install(viewPager2))رفع مشکل را فعال کنید. ( Ic9a85 )
رفع اشکالات
- مشکلات سازگاری با نسخههای جدیدتر
RecyclerViewبرطرف شد. کاربران این نسخه ازViewPager2باید حداقل بهRecyclerView1.3.1-rc01 بهروزرسانی کنند.
نسخه ۱.۱.۰-بتا۰۱
۴ آگوست ۲۰۲۱
androidx.viewpager2:viewpager2:1.1.0-beta01 منتشر شد. نسخه 1.1.0-beta01 شامل این کامیتها است.
تغییرات API
اندروید ایکس را برای استفاده از کاتلین ۱.۴ ارتقا دهید ( Id6471 ، b/165307851 ، b/165300826 )
برای همه کتابخانههای اندروید به سمت جاوا ۸ حرکت کنید ( ۲۹۲۳f۳۹ )
رفع اشکالات
- مشکل ارسال پنجرههای الحاقی برطرف شد، حالا همه صفحات الحاقهای یکسانی دریافت میکنند. ( I47fef )
نسخه ۱.۱.۰-آلفا۰۱
۱ آوریل ۲۰۲۰
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 )
نسخه ۱.۰.۰
نسخه ۱.۰.۰
۲۰ نوامبر ۲۰۱۹
androidx.viewpager2:viewpager2:1.0.0 بدون هیچ تغییری از نسخه 1.0.0-rc01 منتشر شده است. نسخه 1.0.0 شامل این کامیتها است .
ویژگیهای اصلی نسخه ۱.۰.۰
- بهبودهایی نسبت به پیادهسازی قبلی ViewPager :
- پشتیبانی از طرحبندی RTL (راست به چپ)
- پشتیبانی از جهت گیری عمودی
- پشتیبانی قابل اعتماد
Fragment(شامل مدیریت تغییرات در مجموعهFragmentاصلی) - انیمیشنهای تغییر مجموعه دادهها (شامل پشتیبانی
DiffUtil)
- مهاجرت آسان از پیادهسازی قبلی
ViewPager(در صورت امکان، از API parity استفاده کنید). به راهنمای مهاجرت و برنامه نمونه مراجعه کنید.
به راهنمای استفاده از ViewPager2 برای جابجایی بین Fragmentها مراجعه کنید.
نسخه ۱.۰.۰-rc01
۲۳ اکتبر ۲۰۱۹
androidx.viewpager2:viewpager2:1.0.0-rc01 بدون هیچ تغییری از 1.0.0-beta05 منتشر شده است. نسخه 1.0.0-rc01 شامل این کامیتها است .
نسخه ۱.۰.۰-بتا۰۵
۹ اکتبر ۲۰۱۹
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 بهتر کار کند.
نسخه ۱.۰.۰-بتا۰۴
۵ سپتامبر ۲۰۱۹
androidx.viewpager2:viewpager2:1.0.0-beta04 منتشر شد. کامیتهای موجود در این نسخه را میتوانید اینجا پیدا کنید.
رفع اشکالات
- مشکل مربوط به حروف کوچک و بزرگ در لبههای
FragmentStateAdapterبا پشته پشتیFragmentبرطرف شد. ( b/139095195 ) - رفع مشکل
EditTextبا تنظیمات ویژگی خاص که باعث پرش اسکرول/صفحه هنگام تایپ/فوکوس میشد. ( b/138044582 ، b/139432498 ) - رفع مشکل مربوط به نمونههای
ItemDecorationو ارائه راهحلی برای موقعیتیابی نشانگر overscroll. ( b/139012032 ) - تعدادی از مشکلات در سایر کامپوننتها برطرف شدند تا
ViewPager2بهتر کار کند: RecyclerView ، NestedScrollView و Navigation .
نسخه ۱.۰.۰-بتا۰۳
۷ آگوست ۲۰۱۹
androidx.viewpager2:viewpager2:1.0.0-beta03 منتشر شد. کامیتهای موجود در این نسخه را میتوانید اینجا پیدا کنید.
رفع اشکالات
- مشکل
FragmentStateAdapterبا وضعیت گذرایFragmentبرطرف شد. b/134246546 - رفع مشکلات
currentItemوscrollStateهنگام تغییر یک مجموعه داده در حین اسکرول روان (موارد حاشیهای برطرف شد). b/137642608 - رفع مشکل تداخل انیمیشنهای
PageTransformer(از جملهMarginPageTransformer) با انیمیشنهای تغییر مجموعه دادهها. b/134658996 - رفع مشکل انیمیشنهای اسکرول روان در مجموعه دادههای بزرگ (محدودیت مقدار عدد صحیح
float). b/134858960
نسخه ۱.۰.۰-بتا۰۲
۱۹ ژوئیه ۲۰۱۹
androidx.viewpager2:viewpager2:1.0.0-beta02 منتشر شد. کامیتهای موجود در این نسخه را میتوانید اینجا پیدا کنید.
رفع اشکالات
- وابستگی ناخواستهی jacoco که در
1.0.0-beta01معرفی شده بود، حذف شد. ( b/137782951 )
نسخه ۱.۰.۰-بتا۰۱
۱۷ ژوئیه ۲۰۱۹
androidx.viewpager2:viewpager2:1.0.0-beta01 منتشر شد. کامیتهای موجود در این نسخه را میتوانید اینجا پیدا کنید.
رفع اشکالات
- رفع مشکل از کار افتادن
ViewPager2.updateCurrentItemهنگام اسکرول کردن و بهروزرسانی مجموعه دادهها - رفع مشکل از کار افتادن
NullPointerExceptionمربوط بهViewPager2.isLayoutRtl -
TOUCH_SLOP_PAGINGاکنون یک شیب لمسی پیشفرض است - رویدادهای
OnPageChangeCallbackبرای آداپتورهای خالی برطرف شد (صفحه0به جای-1برای برابری باViewPager1)
مشکلات شناخته شده
- ما هنوز در حال کار بر روی مسائل باز باقی مانده قبل از انتقال به نسخه پایدار هستیم.
نسخه ۱.۰.۰-alpha06
۲ ژوئیه ۲۰۱۹
androidx.viewpager2:viewpager2:1.0.0-alpha06 منتشر شد. کامیتهای موجود در این نسخه را میتوانید اینجا پیدا کنید.
این آخرین نسخه آلفای برنامهریزیشده ما قبل از متوقف کردن API و انتقال به نسخه بتا است - لطفاً بازخورد API خود را با ما در میان بگذارید.
ویژگیهای جدید
- مبانی بهبود دسترسی:
ACTION_PAGE_RIGHT،ACTION_PAGE_DOWNو غیره
تغییرات API
-
FragmentStateAdapter:Fragmentغیر اصلی آیتم باSTARTEDمحدود میشوند وmenuVisibilityآنها روی false تنظیم شده است. -
PageTransformer،MarginPageTransformer،CompositePageTransformer: مستندات مربوط بهpositionثابت.
رفع اشکالات
-
currentItemپس از تغییر مجموعه دادهها / تغییر آداپتور برطرف شد. - مشکل
MarginPageTransformerباoffscreenPageLimitبرطرف شد. - اقدامات دسترسی در حین استفاده از
FakeDragبرطرف شد.
نسخه ۱.۰.۰-آلفا۰۵
۵ ژوئن ۲۰۱۹
androidx.viewpager2:viewpager2:1.0.0-alpha05 منتشر شد. کامیتهای موجود در این نسخه را میتوانید اینجا پیدا کنید.
ویژگیهای جدید
-
ItemDecoratorبا رفتاری سازگار باRecyclerViewمعرفی شد. -
MarginPageTransformerمعرفی شد تا امکان ایجاد فاصله بین صفحات (خارج از حاشیه داخلی صفحه) را فراهم کند. -
CompositePageTransformerبرای فراهم کردن قابلیت ترکیب چندینPageTransformerمعرفی شد.
تغییرات API
- تغییر نام متد
FragmentStateAdapter#getItemبهFragmentStateAdapter#createFragment- نام متد قبلی در گذشته منبع باگ بوده است. - مقدار
OFFSCREEN_PAGE_LIMIT_DEFAULTاز0به-1تغییر کرد. در صورت استفاده از ثابتOFFSCREEN_PAGE_LIMIT_DEFAULTنیازی به تغییر کد کلاینت نیست.
رفع اشکالات
- رفتار
getCurrentItem() هنگامی کهSCROLL_STATE_SETTLINGبا کشیدن در جهت مخالف قطع میشد، اصلاح شد. - مشکلات مربوط به بارگذاری کلاس
FragmentStateAdapterکه در زمینهی «فعالیتها را نگه ندارید» برطرف شدهاند. - مستندات
setOffscreenPageLimitبهبود یافته است.
نسخه ۱.۰.۰-آلفا۰۴
۷ مه ۲۰۱۹
androidx.viewpager2:viewpager2:1.0.0-alpha04 منتشر شد. کامیتهای موجود در این نسخه را میتوانید اینجا پیدا کنید.
ویژگیهای جدید
-
offscreenPageLimit: امکان کنترل دقیق تعدادViewها/Fragmentهای صفحه که در سلسله مراتب view نگهداری میشوند را فراهم میکند.
تغییرات API
- ویژگیهای
orientationوisUserScrollableدیگر بخشی ازSavedStateنیستند. - متدهای
saveStateوrestoreStateدرFragmentStateAdapterنهایی شدند. - حاشیهنویسیهای
ViewPager2.OrientationوViewPager2.ScrollStateبه صورت عمومی منتشر نشدند.
رفع اشکالات
-
SavedState: مشکل بازیابی هنگام تخریب/بازسازیActivityبرطرف شد. -
SavedState: بازیابی را تا زمان تنظیم آداپتور به تأخیر میاندازد -
OnPageChangeCallback: موارد حاشیهای جزئی برطرف شد
نسخه ۱.۰.۰-آلفا۰۳
۳ آوریل ۲۰۱۹
androidx.viewpager2:viewpager2:1.0.0-alpha03 منتشر شد. کامیتهای موجود در این نسخه را میتوانید اینجا پیدا کنید.
ویژگیهای جدید
- قابلیت اسکرول کردن ViewPager2 به صورت برنامهنویسی شده:
fakeDragBy(offsetPx).
تغییرات API
-
FragmentStateAdapterاکنون به یک شیءLifecycleنیاز دارد. دو سازندهی کاربردی برای دریافت آن از میزبانFragmentActivityیا میزبانFragmentاضافه شدهاند.
رفع اشکالات
- رفع مشکلات متعدد پشتیبانی
Fragment:- مدیریت بهروزرسانیهای مجموعه دادهها در حالت کمینهسازیشده یا در حین چرخش صفحه نمایش؛
- حذف قطعات نامربوط پس از چرخش؛
- حذف وضعیت ذخیره شده موارد حذف شده.
-
PageChangeCallback: محاسبهی آفست صفحه برای صفحات دارای حاشیه ثابت شد.
نسخه ۱.۰.۰-آلفا۰۲
۱۳ مارس ۲۰۱۹
androidx.viewpager2:viewpager2:1.0.0-alpha02 منتشر شد. لیست کامل کامیتهای موجود در این نسخه را میتوانید اینجا بیابید.
ویژگیهای جدید
- قابلیت غیرفعال کردن ورودی کاربر (
setUserInputEnabled،isUserInputEnabled)
تغییرات API
- فینال کلاس ViewPager2
رفع اشکالات
- رفع مشکلات پایداری
FragmentStateAdapter
نسخه ۱.۰.۰-آلفا۰۱
۷ فوریه ۲۰۱۹
androidx.viewpager2:viewpager2 1.0.0-alpha01 منتشر شد. این اولین نسخه از ViewPager2 است.
ویژگیهای جدید
- در مقایسه با نسخه قبلی خود
android.support.v4.view.ViewPager(VP1):- پشتیبانی از طرحبندی راست به چپ (RTL)
- پشتیبانی از جهت گیری عمودی
-
notifyDataSetChangedکاملاً کاربردی (اشکالات VP1 برطرف شده است)
تغییرات API
-
FragmentStateAdapterجایگزینFragmentStatePagerAdapterمیشود. -
RecyclerView.AdapterجایگزینPagerAdapterمیشود. -
registerOnPageChangeCallbackجایگزین تابعaddPageChangeListenerمیشود.
مشکلات شناخته شده
- کلیپتوپدینگ
- بدون فیک درگ
- جاوا داک
- پیمایش تو در تو به موازات جهت گیری
- بدون کنترل محدودیت خارج از صفحه
- به ادغام بهتر TabLayout نیاز دارد
- بدون تنظیم عرض صفحه (اجباری ۱۰۰٪/۱۰۰٪)
- تبدیلکننده صفحه: بدون انتخاب لایه سختافزار/نرمافزار؛ بدون ترتیب ترسیم معکوس
- هنگام درج صفحه قبل از صفحه فعلی، مورد فعلی قابل مشاهده باقی بماند
- ناوبری کیبورد نیاز به کار دارد
- بهبودهای پایداری/عملکرد
FragmentStateAdapterدر راه است