ویو پیجر۲

نمایش نماها یا قطعات در قالبی قابل کشیدن.
آخرین به‌روزرسانی انتشار پایدار کاندیدای انتشار انتشار بتا انتشار آلفا
۱۴ مه ۲۰۲۴ ۱.۱.۰ - - -

وابستگی‌های اندروید ایکس

برای استفاده از 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 را که RecyclerView 1.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 باید حداقل به RecyclerView 1.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 در راه است