ViewPager2

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

יחסי תלות ב-AndroidX

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

מגניב

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

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

שינויים ב-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 כדי להחליק בין קטעי Fragment.

גרסה 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 משוחרר. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.

תיקוני באגים

  • תיקון לבעיה אחת (FragmentStateAdapter) של אותיות רישיות במקבץ Fragment. (b/139095195)
  • תיקון ל-EditText עם הגדרות מאפיינים מסוימות שגורמות לגלילה או לקפיצה לדף בזמן הקלדה או התמקדות. (b/138044582, b/139432498)
  • תיקון לבעיה במכונות ItemDecoration ופתרון עקיף למיקום של אינדיקטור הגלילה החוזרת. (b/139012032)
  • תוקנו מספר בעיות ברכיבים אחרים כדי לפעול טוב יותר עם ViewPager2: RecyclerView, NestedScrollView ו-ניווט.

גרסה 1.0.0-beta03

7 באוגוסט 2019

androidx.viewpager2:viewpager2:1.0.0-beta03 משוחרר. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.

תיקוני באגים

  • תיקון לבעיה ב-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 משוחרר. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.

תיקוני באגים

  • הסרה של תלות לא מכוונת ב-Jacoco שנוספה ב-1.0.0-beta01. (b/137782951)

גרסה 1.0.0-beta01

17 ביולי 2019

androidx.viewpager2:viewpager2:1.0.0-beta01 משוחרר. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.

תיקוני באגים

  • תיקון לקריסה של 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 משוחרר. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.

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

תכונות חדשות

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

שינויים ב-API

  • FragmentStateAdapter: פריטים מסוג Fragment שאינם פריטים ראשיים מוגבלים ל-STARTED, והmenuVisibility מוגדר כ-False.
  • PageTransformer, MarginPageTransformer, CompositePageTransformer: מסמכי עזרה לגבי positionfixed.

תיקוני באגים

  • currentItem אחרי תיקון השינוי במערך הנתונים או במתאם.
  • תוקנה הבעיה MarginPageTransformer עם offscreenPageLimit.
  • תוקנה ההתנהגות של פעולות הנגישות במצב FakeDrag.

גרסה 1.0.0-alpha05

5 ביוני 2019

androidx.viewpager2:viewpager2:1.0.0-alpha05 משוחרר. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.

תכונות חדשות

  • 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
  • השיטות saveState ו-restoreState הפכו סופיות ב-FragmentStateAdapter
  • הערות של ViewPager2.Orientation ו-ViewPager2.ScrollState שהפכו ל'לא גלויות לכולם'

תיקוני באגים

  • SavedState: תוקנה בעיה בשחזור כש-Activity נהרס או נוצר מחדש
  • SavedState: השחזור נדחה עד להגדרת המתאם
  • OnPageChangeCallback: כיסויי קצה משניים תוקנו

גרסה 1.0.0-alpha03

3 באפריל 2019

androidx.viewpager2:viewpager2:1.0.0-alpha03 משוחרר. כאן אפשר למצוא את ההתחייבויות (commits) שכלולות בגרסה הזו.

תכונות חדשות

  • יכולת לגלול באופן פרוגרמטי ב-ViewPager2: ‏ fakeDragBy(offsetPx).

שינויים ב-API

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

תיקוני באגים

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

גרסה 1.0.0-alpha02

13 במרץ 2019

androidx.viewpager2:viewpager2:1.0.0-alpha02 משוחרר. כאן אפשר למצוא את הרשימה המלאה של השינויים שכלולים בגרסה הזו.

תכונות חדשות

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

שינויים ב-API

  • הכיתה 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 טופלו)

שינויים ב-API

  • FragmentStateAdapter מחליף את FragmentStatePagerAdapter
  • RecyclerView.Adapter מחליף את PagerAdapter
  • registerOnPageChangeCallback מחליף את addPageChangeListener

בעיות מוכרות

  • clipToPadding
  • no fakeDrag
  • JavaDoc
  • גלילה בתצוגת עץ במקביל לכיוון
  • בלי הגבלות על מחוץ למסך
  • צריך שילוב טוב יותר של TabLayout
  • אין הגדרה של pageWidth (אולץ 100%/100%)
  • טרנספורמטור דפים: אין אפשרות לבחור שכבת חומרה/תוכנה, אין אפשרות להפוך את סדר הציור
  • keep current item visible when inserting a page before current
  • נדרשת פעולה לגבי הניווט במקלדת
  • FragmentStateAdapter שיפורים ביציבות ובביצועים בקרוב