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, שRecyclerView1.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צריכים לעדכן ל-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 כדי להחליק בין קטעי 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מחליף אתFragmentStatePagerAdapterRecyclerView.Adapterמחליף אתPagerAdapterregisterOnPageChangeCallbackמחליף אתaddPageChangeListener
בעיות מוכרות
- clipToPadding
- no fakeDrag
- JavaDoc
- גלילה בתצוגת עץ במקביל לכיוון
- בלי הגבלות על מחוץ למסך
- צריך שילוב טוב יותר של TabLayout
- אין הגדרה של pageWidth (אולץ 100%/100%)
- טרנספורמטור דפים: אין אפשרות לבחור שכבת חומרה/תוכנה, אין אפשרות להפוך את סדר הציור
- keep current item visible when inserting a page before current
- נדרשת פעולה לגבי הניווט במקלדת
FragmentStateAdapterשיפורים ביציבות ובביצועים בקרוב