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
צריכים לעדכן ל-RecyclerView
1.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
: מסמכי עזרה לגביposition
fixed.
תיקוני באגים
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
שיפורים ביציבות ובביצועים בקרוב