ViewPager2

הצגת תצוגות או מקטעים בפורמט שאפשר להחליק בו.
העדכון האחרון גרסה יציבה גרסה מועמדת להפצה גרסת בטא גרסת אלפא
‫14 במאי 2024 1.1.0 - - -

AndroidX Dependencies

כדי להשתמש ב-ViewPager2, צריך להוסיף את התלות הבאה ב-AndroidX לקובץ build.gradle של הפרויקט:

מגניב

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 ש-RecyclerView 1.2.0-alpha02 ומעלה לא מאכלס יותר כברירת מחדל.
  • הוספנו ממשק FragmentTransactionCallback להאזנה לשינויים במחזור החיים של מקטעים שמתרחשים בתוך FragmentStateAdapter.
  • תוקנה בעיה ב-FragmentStateAdapter שקשורה לחשיפה של תפריט הפרגמנט הראשוני כשמוסיפים פרגמנט ל-FragmentManager.
  • תוקן השליחה של שוליים פנימיים של חלון: עכשיו כל הדפים מקבלים את אותם שוליים פנימיים. בגלל האופן שבו WindowInsets מופצים בגרסאות ישנות של API (גרסה < API 30), שיכול למנוע את הזמינות של שוליים פנימיים לתצוגות מקבילות, צריך להפעיל את התיקון הזה באמצעות WindowInsetsApplier.install(viewPager2) אם רוצים להחיל שוליים פנימיים במכשירים עם גרסה < API 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 מכילה את השמירות האלה.

שינויים ב-API

  • נוספו קריאות חוזרות (callback) לשמירת מצב של Fragment ל-FragmentTransactionCallback. (I45b90)
  • ViewPager2 לא מנסה יותר לתקן את השליחה השגויה של גרסאות ישנות של API ‏ (< 30), כי התיקון עצמו עלול להזיק לאחים של ViewPager2.WindowInsets התיקון עדיין זמין, אבל הוא הפך לאפשרות שצריך להפעיל, כדי שהמפתחים יוכלו להחליט לגבי כל מקרה בנפרד. כדי להפעיל את התיקון, צריך להתקשר למספר 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 מכילה את השמירות האלה.

שינויים ב-API

תיקוני באגים

  • תוקן השליחה של שוליים פנימיים של חלון, ועכשיו כל הדפים מקבלים את אותם שוליים פנימיים. (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:
    • תמיכה בפריסה מימין לשמאל (RTL)
    • תמיכה בכיוון אנכי
    • תמיכה אמינה ב-Fragment (כולל טיפול בשינויים באוסף הבסיסי של Fragment)
    • אנימציות של שינויים במערך הנתונים (כולל תמיכה ב-DiffUtil)
  • העברה קלה מההטמעה הקודמת ViewPager (שוויון API איפה שאפשר). פרטים נוספים זמינים במדריך להעברת נתונים ובאפליקציה לדוגמה.

במדריך מוסבר איך להשתמש ב-ViewPager2 כדי להחליק בין Fragments.

גרסה ‎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 edge-case עם Fragment back stack. (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 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.

זוהי גרסת האלפא האחרונה המתוכננת לפני הקפאת ה-API והמעבר לגרסת בטא. נשמח לקבל מכם משוב על ה-API.

תכונות חדשות

  • הבסיס לשיפור הנגישות: ACTION_PAGE_RIGHT,‏ ACTION_PAGE_DOWN וכו'.

שינויים ב-API

  • 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.

שינויים ב-API

  • השיטה 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 שנשמרים בהיררכיית התצוגה

שינויים ב-API

  • המאפיינים orientation ו-isUserScrollable כבר לא חלק מ-SavedState
  • ‫methods מסוג saveState ו-restoreState הפכו ל-final ב-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).

שינויים ב-API

  • FragmentStateAdapter דורשת עכשיו אובייקט Lifecycle. נוספו שני קונסטרוקטורים של כלי עזר כדי לקבל אותו מהמארח FragmentActivity או מהמארח Fragment.

תיקוני באגים

  • בוצעו תיקונים רבים בתמיכה של Fragment:
    • טיפול בעדכונים של מערך הנתונים כשהאפליקציה ממוזערת או במהלך סיבוב המסך.
    • הסרת רכיבי Fragment לא רלוונטיים אחרי סיבוב;
    • הסרת המצב השמור של פריטים שהוסרו.
  • PageChangeCallback: תוקן חישוב ההיסט של הדף בדפים עם שוליים.

גרסה ‎1.0.0-alpha02

‫13 במרץ 2019

androidx.viewpager2:viewpager2:1.0.0-alpha02 מופץ. כאן אפשר לראות את הרשימה המלאה של פעולות ה-commit שכלולות בגרסה הזו.

תכונות חדשות

  • אפשרות להשבית קלט של משתמשים (setUserInputEnabled, isUserInputEnabled)

שינויים ב-API

  • ‫ViewPager2 class final

תיקוני באגים

  • FragmentStateAdapter תיקוני יציבות

גרסה 1.0.0-alpha01

‫7 בפברואר 2019

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

בעיות מוכרות

  • clipToPadding
  • no fakeDrag
  • JavaDoc
  • גלילה מקוננת במקביל לכיוון
  • אין הגבלת שליטה מחוץ למסך
  • צריך לשפר את השילוב של TabLayout
  • no pageWidth setter (forced 100%/100%)
  • הכלי לשינוי דפים: אין אפשרות לבחור שכבת חומרה/תוכנה, אין אפשרות להפוך את סדר השרטוט
  • שמירה על נראות הפריט הנוכחי כשמוסיפים דף לפניו
  • נדרשת פעולה לניווט במקלדת
  • FragmentStateAdapter שיפורים ביציבות ובביצועים