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ש-RecyclerView1.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צריכים לעדכן לגרסהRecyclerView1.3.1-rc01 לפחות.
גרסה 1.1.0-beta01
4 באוגוסט 2021
androidx.viewpager2:viewpager2:1.1.0-beta01 מופץ. גרסה 1.1.0-beta01 מכילה את השמירות האלה.
שינויים ב-API
שדרוג 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-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 מופץ. כאן אפשר לראות את השמירות שכלולות בגרסה הזו.
תיקוני באגים
- תיקון של בעיה במקרה קצה ב-
FragmentStateAdapteredge-case עםFragmentback 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שיפורים ביציבות ובביצועים