ViewPager2
Letzte Aktualisierung | Stabile Version | Releasekandidat | Beta-Ausgabe | Alpharelease |
---|---|---|---|---|
14. Mai 2024 | 1.1.0 | − | − | − |
AndroidX-Abhängigkeiten
Fügen Sie der Datei build.gradle
Ihres Projekts die folgende AndroidX-Abhängigkeit hinzu, um ViewPager2
zu verwenden:
Cool
dependencies { implementation "androidx.viewpager2:viewpager2:1.1.0" }
Kotlin
dependencies { implementation("androidx.viewpager2:viewpager2:1.1.0") }
Feedback
Dein Feedback hilft uns, Jetpack zu verbessern. Lassen Sie uns wissen, wenn Sie neue Probleme entdecken oder Ideen zur Verbesserung dieser Bibliothek haben. Sehen Sie sich die vorhandenen Probleme in dieser Bibliothek an, bevor Sie eine neue erstellen. Durch Klicken auf die Stern-Schaltfläche können Sie zu einem vorhandenen Problem abstimmen.
Weitere Informationen finden Sie in der Dokumentation zum Issue Tracker.
Version 1.1.0
Version 1.1.0
14. Mai 2024
androidx.viewpager2:viewpager2:1.1.0
wird freigegeben. Version 1.1.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.0.0
- Behebt Abstürze bei Verwendung mit RecyclerView
1.3.1-rc01
oder höher. ViewPager2
füllt jetzt korrekt dieCollectionInfo
undCollectionItemInfo
aus, die von RecyclerView1.2.0-alpha02
und höher nicht mehr standardmäßig befüllt werden.- Die
FragmentTransactionCallback
-Schnittstelle wurde hinzugefügt, um auf Änderungen des Fragmentlebenszyklus innerhalb vonFragmentStateAdapter
zu warten. - Das
FragmentStateAdapter
-Problem mit der anfänglichen Sichtbarkeit des Fragmentmenüs beim Hinzufügen eines Fragments zuFragmentManager
wurde behoben. - Die Weiterleitung von Fenstereinfügungen wurde korrigiert: Alle Seiten erhalten jetzt dieselben Einsätze. Aufgrund der Art und Weise, wie
WindowInsets
in alten API-Versionen (< API 30) weitergeleitet werden, die verhindern können, dass Einsätze für gleichgeordnete Ansichten verfügbar sind, müssen Sie diese Korrektur überWindowInsetsApplier.install(viewPager2)
aktivieren, wenn Sie Einsätze auf < API 30-Geräten anwenden möchten.
Version 1.1.0-rc01
1. Mai 2024
androidx.viewpager2:viewpager2:1.1.0-rc01
wurde ohne nennenswerte Änderungen seit Version 1.1.0-beta02 veröffentlicht. Version 1.1.0-rc01 enthält diese Commits.
Version 1.1.0-beta02
24. Mai 2023
androidx.viewpager2:viewpager2:1.1.0-beta02
wird freigegeben. Version 1.1.0-beta02 enthält diese Commits.
API-Änderungen
- Der Fragmentstatus zum Speichern von Callbacks wurde zu
FragmentTransactionCallback
hinzugefügt. (I45b90) ViewPager2
versucht jetzt nicht mehr, die fehlerhafteWindowInsets
-Weiterleitung alter API-Versionen (< 30) zu reparieren, da die Korrektur selbst für Geschwister vonViewPager2
schädlich sein kann. Die Lösung ist weiterhin verfügbar, wurde jedoch als Zustimmung festgelegt, sodass Entwickler von Fall zu Fall entscheiden können. Aktivieren Sie die Korrektur, indem SieWindowInsetsApplier.install(viewPager2))
aufrufen. (Ic9a85)
Fehlerkorrekturen
- Behebe Kompatibilitätsprobleme mit neueren Versionen von
RecyclerView
. Nutzer dieser Version vonViewPager2
sollten mindestens aufRecyclerView
1.3.1-rc01 aktualisieren.
Version 1.1.0-beta01
4. August 2021
androidx.viewpager2:viewpager2:1.1.0-beta01
wird freigegeben. Version 1.1.0-beta01 enthält diese Commits.
API-Änderungen
Upgrade von androidx auf Kotlin 1.4 (Id6471, b/165307851, b/165300826)
Wechsel zu Targeting auf Java 8 für alle androidx-Bibliotheken (2923f39)
Fehlerkorrekturen
- Die Weiterleitung von Fenstereinfügungen wurde korrigiert. Alle Seiten erhalten jetzt dieselben Einsätze. (I47fef)
Version 1.1.0-alpha01
1. April 2020
androidx.viewpager2:viewpager2:1.1.0-alpha01
wird freigegeben. Version 1.1.0-alpha01 enthält diese Commits.
Mit diesem Release wird eine Änderung in RecyclerView 1.2.0-alpha02 begleitet, indem CollectionInfo
und CollectionItemInfo
ausgefüllt werden, die RecyclerView
nicht mehr standardmäßig bereitstellt. Beim Aktualisieren auf RecyclerView 1.2.0-alpha02
wird auch ViewPager2
aktualisiert, um Regressionen bei der Barrierefreiheit zu vermeiden.
Neue Funktionen
- Die
FragmentTransactionCallback
-Schnittstelle wurde hinzugefügt, um auf Änderungen des Fragmentlebenszyklus innerhalb vonFragmentStateAdapter
zu warten. (Ibda77)
Fehlerkorrekturen
- Das
FragmentStateAdapter
-Problem mit der anfänglichen Sichtbarkeit des Fragmentmenüs beim Hinzufügen eines Fragments zuFragmentManager
wurde behoben. (I9d2ff, b/144442240)
Version 1.0.0
Version 1.0.0
20. November 2019
androidx.viewpager2:viewpager2:1.0.0
wurde ohne Änderungen gegenüber 1.0.0-rc01 veröffentlicht. Version 1.0.0 enthält diese Commits.
Hauptfunktionen von Version 1.0.0
- Verbesserungen gegenüber der vorherigen ViewPager-Implementierung:
- Unterstützung für linksläufiges Layout (Rechts-nach-links)
- Unterstützung für vertikale Ausrichtung
- Zuverlässiger
Fragment
-Support (einschließlich Änderungen an der zugrunde liegendenFragment
-Sammlung) - Animationen für Dataset-Änderungen (einschließlich
DiffUtil
-Unterstützung)
- Einfache Migration von der vorherigen
ViewPager
-Implementierung (API-Parität, wenn möglich). Weitere Informationen finden Sie im Migrationsleitfaden und in der Beispiel-App.
Weitere Informationen dazu, wie Sie mit ViewPager2 zwischen Fragmenten wechseln können, finden Sie in diesem Leitfaden.
Version 1.0.0-rc01
23. Oktober 2019
androidx.viewpager2:viewpager2:1.0.0-rc01
wurde ohne Änderungen seit 1.0.0-beta05
veröffentlicht. Version 1.0.0-rc01 enthält diese Commits.
Version 1.0.0-beta05
9. Oktober 2019
androidx.viewpager2:viewpager2:1.0.0-beta05
wird freigegeben. Version 1.0.0-beta05 enthält diese Commits.
Fehlerkorrekturen
- Fehlerkorrektur für
requestFocus
auf einer Seite außerhalb des Bildschirms, die eine Seitenänderung verursacht hat. Das Verhalten entspricht nun dem ursprünglichen ViewPager. (b/140656866) - Problem behoben, bei dem nach einem Seitenwechsel
focus
auf einer Seite außerhalb des Bildschirms verbleibt. Beim Wechseln der Seite ist der Fokus jetzt aufgehoben. (b/140656866) - Fehler bei der Reihenfolge der
Fragment
-pausieren / fortsetzen Transaktionen beim Ändern der Seite (wir pausieren jetzt immer das alte primäre Element, bevor das neue fortgesetzt wird). (b/139489059) - Fehlerkorrektur für
canScrollHorizontally(int)
undcanScrollVertically(int)
: Jetzt wird angezeigt, ob ViewPager2 in die angegebene Richtung scrollen kann. (b/141848404) - Ein Problem in SwipeRefreshLayout wurde behoben, damit der Vorgang mit ViewPager2 besser funktioniert.
Version 1.0.0-beta04
5. September 2019
androidx.viewpager2:viewpager2:1.0.0-beta04
wird freigegeben. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
- Fehlerkorrektur für
FragmentStateAdapter
Edge-Case-Problem mitFragment
Back Stack. (b/139095195) - Fehlerkorrektur für
EditText
mit bestimmten Attributkonfigurationen, die beim Tippen bzw. Fokussieren zu Scrollen/Seitensprüngen führten. (b/138044582 und b/139432498) - Behebung eines Problems mit
ItemDecoration
-Instanzen und einer Problemumgehung für die Positionierung der Overscroll-Anzeige. (b/139012032) - In anderen Komponenten wurden einige Probleme behoben, damit die Funktion
ViewPager2
besser funktioniert: RecyclerView, NestedScrollView und Navigation.
Version 1.0.0-beta03
7. August 2019
androidx.viewpager2:viewpager2:1.0.0-beta03
wird freigegeben. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
- Behebung des Problems
FragmentStateAdapter
mit vorübergehendemFragment
-Status. b/134246546 - Probleme mit
currentItem
undscrollState
behoben, bei denen ein Datensatz beim sanften Scrollen geändert wird (Grenzfälle werden berücksichtigt). b/137642608 - Fehlerkorrektur für
PageTransformer
-Animationen (einschließlichMarginPageTransformer
), die mit Animationen zum Ändern von Datensätzen in Konflikt geraten. b/134658996 - Problem mit flüssigem Scrollen bei Animationen in großen Datensätzen wurde behoben (Grenzwert für ganzzahlige
float
). b/134858960
Version 1.0.0-beta02
19. Juli 2019
androidx.viewpager2:viewpager2:1.0.0-beta02
wird freigegeben. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
- Die unbeabsichtigte Jacquard-Abhängigkeit, die in
1.0.0-beta01
eingeführt wurde, wurde entfernt. (b/137782951)
Version 1.0.0-beta01
17. Juli 2019
androidx.viewpager2:viewpager2:1.0.0-beta01
wird freigegeben. Die in dieser Version enthaltenen Commits finden Sie hier.
Fehlerkorrekturen
- Fehlerkorrektur für
ViewPager2.updateCurrentItem
-Absturz beim Scrollen und Aktualisieren des Datensatzes - Fehlerkorrektur für
NullPointerException
Absturz im Zusammenhang mitViewPager2.isLayoutRtl
TOUCH_SLOP_PAGING
ist jetzt ein standardmäßiger Touch SlopOnPageChangeCallback
-Ereignisse für leere Adapter behoben (Seite0
statt-1
für Gleichheit mitViewPager1
)
Bekannte Probleme
- Wir arbeiten noch an den noch nicht behobenen Problemen, bevor wir zur stabilen Version wechseln
Version 1.0.0-alpha06
2. Juli 2019
androidx.viewpager2:viewpager2:1.0.0-alpha06
wird freigegeben. Die in dieser Version enthaltenen Commits finden Sie hier.
Dies ist unsere letzte geplante Alphaversion, bevor die API eingefroren und in die Betaversion verschoben wird. Bitte geben Sie uns Feedback zur API.
Neue Funktionen
- Grundlagen für verbesserte Bedienungshilfen:
ACTION_PAGE_RIGHT
,ACTION_PAGE_DOWN
usw.
API-Änderungen
FragmentStateAdapter
:Fragment
s mit nicht primärem Artikel sind aufSTARTED
beschränkt und ihremenuVisibility
ist auf „false“ gesetzt.PageTransformer
,MarginPageTransformer
,CompositePageTransformer
: Dokumentation fürposition
behoben.
Fehlerkorrekturen
currentItem
nach der Datensatz-/Adapteränderung behoben.MarginPageTransformer
mit ProblemoffscreenPageLimit
behoben.- Aktionen für Bedienungshilfen im Verhalten von
FakeDrag
wurden behoben.
Version 1.0.0-alpha05
5. Juni 2019
androidx.viewpager2:viewpager2:1.0.0-alpha05
wird freigegeben. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
ItemDecorator
wurde mit einem Verhalten eingeführt, das demRecyclerView
entspricht.MarginPageTransformer
wurde eingeführt, um die Möglichkeit zu bieten, Platz zwischen Seiten zu schaffen (außerhalb des Seiteneinsatzes).CompositePageTransformer
wurde eingeführt, um die Möglichkeit zu bieten, mehrerePageTransformer
s zu kombinieren.
API-Änderungen
- Die Methode
FragmentStateAdapter#getItem
wurde inFragmentStateAdapter#createFragment
umbenannt. Der vorherige Methodenname hat sich in der Vergangenheit als Fehlerquelle erwiesen. - Der Wert für „
OFFSCREEN_PAGE_LIMIT_DEFAULT
“ wurde von „0
“ zu „-1
“ geändert. Bei Verwendung derOFFSCREEN_PAGE_LIMIT_DEFAULT
-Konstante ist keine Änderung des Clientcodes erforderlich.
Fehlerkorrekturen
- Das Verhalten von
getCurrentItem()
wurde korrigiert, wennSCROLL_STATE_SETTLING
durch einen Zug in die entgegengesetzte Richtung unterbrochen wird. FragmentStateAdapter
-Probleme beim Laden der Klasse, die im Kontext „Aktivitäten nicht beibehalten“ behoben wurden.- Die
setOffscreenPageLimit
-Dokumentation wurde verbessert.
Version 1.0.0-alpha04
7. Mai 2019
androidx.viewpager2:viewpager2:1.0.0-alpha04
wird freigegeben. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
offscreenPageLimit
: ermöglicht eine genaue Kontrolle über die Anzahl der Seiten-View
s /Fragment
s, die in der Ansichtshierarchie beibehalten werden
API-Änderungen
- Die Attribute
orientation
undisUserScrollable
gehören nicht mehr zuSavedState
- Methoden
saveState
undrestoreState
wurden inFragmentStateAdapter
als endgültig ausgewählt - Anmerkungen zu
ViewPager2.Orientation
undViewPager2.ScrollState
nicht öffentlich gemacht
Fehlerkorrekturen
SavedState
: Ein Problem mit der Wiederherstellung nach dem Löschen / Neuerstellen vonActivity
wurde behobenSavedState
: Wiederherstellung verzögert, bis der Adapter festgelegt istOnPageChangeCallback
: kleinere Grenzfälle behoben
Version 1.0.0-alpha03
3. April 2019
androidx.viewpager2:viewpager2:1.0.0-alpha03
wird freigegeben. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
- Programmatisches Scrollen in ViewPager2 möglich:
fakeDragBy(offsetPx)
.
API-Änderungen
- Für
FragmentStateAdapter
ist jetzt einLifecycle
-Objekt erforderlich. Zwei Dienstprogrammkonstruktoren wurden hinzugefügt, um sie vom HostFragmentActivity
oder dem HostFragment
abzurufen.
Fehlerkorrekturen
- Zahlreiche Fehlerbehebungen bei
Fragment
-Support:- Verarbeitung von Dataset-Aktualisierungen bei Minimierung oder während einer Bildschirmdrehung;
- irrelevante Fragmente nach der Rotation entfernen
- den gespeicherten Status entfernter Elemente wird entfernt.
PageChangeCallback
: feste Berechnung des Seitenoffsets für Seiten mit Rändern.
Version 1.0.0-alpha02
13. März 2019
androidx.viewpager2:viewpager2:1.0.0-alpha02
wird freigegeben. Die vollständige Liste der in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
- Nutzereingabe kann deaktiviert werden (
setUserInputEnabled
,isUserInputEnabled
)
API-Änderungen
- ViewPager2-Klasse – final
Fehlerkorrekturen
FragmentStateAdapter
Stabilitätskorrekturen
Version 1.0.0-alpha01
7. Februar 2019
androidx.viewpager2:viewpager2 1.0.0-alpha01
wird freigegeben. Dies ist die erste Version von ViewPager2.
Neue Funktionen
- Im Vergleich zu seinem Vorgänger
android.support.v4.view.ViewPager
(VP1):- Unterstützung für linksläufiges Layout (RTL-Layout)
- Unterstützung für vertikale Ausrichtung
notifyDataSetChanged
voll funktionsfähig (VP1-Fehler behoben)
API-Änderungen
FragmentStateAdapter
ersetztFragmentStatePagerAdapter
RecyclerView.Adapter
ersetztPagerAdapter
registerOnPageChangeCallback
ersetztaddPageChangeListener
Bekannte Probleme
- ClipToPadding
- kein FakeDrag
- JavaDoc
- verschachteltes Scrollen parallel zur Ausrichtung
- Keine Einstellung für Begrenzungen außerhalb des sichtbaren Bildschirmbereichs
- benötigt eine bessere TabLayout-Integration
- kein pageWidth-Setter (erzwungen: 100%/100%)
- Seitentransformation: keine Auswahl der Hardware-/Softwareschicht; keine umgekehrte Zeichenreihenfolge
- Aktuelles Element sichtbar lassen, wenn eine Seite vor dem aktuellen Element eingefügt wird
- Die Tastaturnavigation sollte überarbeitet werden
FragmentStateAdapter
Stabilitäts-/Leistungsverbesserungen werden geplant