ViewPager2
| Letzte Aktualisierung | Stabile Release | Releasekandidat | Beta-Release | Alpha-Release |
|---|---|---|---|---|
| 14. Mai 2024 | 1.1.0 | - | - | - |
AndroidX-Abhängigkeiten
Wenn Sie ViewPager2 verwenden möchten, fügen Sie der Datei build.gradle Ihres Projekts die folgende AndroidX-Abhängigkeit hinzu:
Cool
dependencies { implementation "androidx.viewpager2:viewpager2:1.1.0" }
Kotlin
dependencies { implementation("androidx.viewpager2:viewpager2:1.1.0") }
Feedback
Ihr Feedback hilft uns, Jetpack zu verbessern. Wenn Sie neue Probleme entdecken oder Ideen zur Verbesserung dieser Bibliothek haben, lassen Sie es uns wissen. Bevor Sie ein neues Problem erstellen, sollten Sie sich jedoch die bereits gemeldeten Probleme in dieser Bibliothek ansehen. Wenn Sie sich einer Problemmeldung anschließen möchten, klicken Sie auf den Button mit dem Stern.
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 ist veröffentlicht. Version 1.1.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.0.0
- Behebt Abstürze bei Verwendung von RecyclerView
1.3.1-rc01oder höher. ViewPager2füllt jetzt dieCollectionInfoundCollectionItemInfokorrekt aus, die in RecyclerView1.2.0-alpha02und höher nicht mehr standardmäßig ausgefüllt werden.- Die
FragmentTransactionCallback-Schnittstelle wurde hinzugefügt, um auf Änderungen des Fragmentlebenszyklus zu reagieren, die inFragmentStateAdapterauftreten. - Das
FragmentStateAdapter-Problem mit der anfänglichen Sichtbarkeit des Fragmentmenüs beim Hinzufügen eines Fragments zumFragmentManagerwurde behoben. - Das Senden von Fenstereinsetzungen wurde korrigiert: Alle Seiten erhalten jetzt dieselben Einsetzungen. Da
WindowInsetsin alten API-Versionen (< API 30) anders verteilt werden, kann es vorkommen, dass Insets für untergeordnete Ansichten nicht verfügbar sind. Wenn Sie Insets auf Geräten mit < API 30 anwenden möchten, müssen Sie diese Korrektur überWindowInsetsApplier.install(viewPager2)aktivieren.
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 ist veröffentlicht. Version 1.1.0-beta02 enthält diese Commits.
API-Änderungen
- Der Klasse
FragmentTransactionCallbackwurden Callbacks zum Speichern des Fragmentstatus hinzugefügt. (I45b90) ViewPager2versucht jetzt nicht mehr, den fehlerhaftenWindowInsets-Versand alter API-Versionen (< 30) zu beheben, da die Korrektur selbst für Geschwister vonViewPager2schädlich sein kann. Der Fix ist weiterhin verfügbar, muss aber aktiviert werden, damit Entwickler ihn im Einzelfall nutzen können. Aktivieren Sie die Korrektur, indem SieWindowInsetsApplier.install(viewPager2))aufrufen. (Ic9a85)
Fehlerkorrekturen
- Kompatibilitätsprobleme mit neueren Versionen von
RecyclerViewbeheben Nutzer dieser Version vonViewPager2sollten mindestens aufRecyclerView1.3.1-rc01 aktualisieren.
Version 1.1.0-beta01
4. August 2021
androidx.viewpager2:viewpager2:1.1.0-beta01 ist veröffentlicht. Version 1.1.0-beta01 enthält diese Commits.
API-Änderungen
Upgrade von androidx auf Kotlin 1.4 (Id6471, b/165307851, b/165300826)
Alle androidx-Bibliotheken sind jetzt auf Java 8 ausgerichtet (2923f39)
Fehlerkorrekturen
- Der Versand von Fenstereinsetzungen wurde korrigiert. Alle Seiten erhalten jetzt dieselben Einsetzungen. (I47fef)
Version 1.1.0-alpha01
1. April 2020
androidx.viewpager2:viewpager2:1.1.0-alpha01 ist veröffentlicht. Version 1.1.0-alpha01 enthält diese Commits.
Mit dieser Version wird eine Änderung in RecyclerView 1.2.0-alpha02 eingeführt, bei der CollectionInfo und CollectionItemInfo ausgefüllt werden, die RecyclerView nicht mehr standardmäßig bereitstellt. Wenn Sie auf RecyclerView 1.2.0-alpha02 aktualisieren, aktualisieren Sie auch ViewPager2, um Beeinträchtigungen der Bedienungshilfen zu vermeiden.
Neue Funktionen
- Die
FragmentTransactionCallback-Schnittstelle wurde hinzugefügt, um auf Änderungen des Fragmentlebenszyklus zu reagieren, die inFragmentStateAdapterauftreten. (Ibda77)
Fehlerkorrekturen
- Das
FragmentStateAdapter-Problem mit der anfänglichen Sichtbarkeit des Fragmentmenüs beim Hinzufügen eines Fragments zumFragmentManagerwurde behoben. (I9d2ff, b/144442240)
Version 1.0.0
Version 1.0.0
20. November 2019
androidx.viewpager2:viewpager2:1.0.0 wird ohne Änderungen gegenüber Version 1.0.0-rc01 veröffentlicht. Version 1.0.0 enthält diese Commits.
Wichtige Funktionen von Version 1.0.0
- Verbesserungen gegenüber der vorherigen ViewPager-Implementierung:
- Unterstützung von linksläufigen (RTL) Layouts
- Unterstützung der vertikalen Ausrichtung
- Zuverlässiger
Fragment-Support (einschließlich der Verarbeitung von Änderungen an der zugrunde liegendenFragment-Erhebung) - Animationen für Dataset-Änderungen (einschließlich
DiffUtil-Unterstützung)
- Einfache Migration von der vorherigen
ViewPager-Implementierung (API-Parität, wo möglich). Weitere Informationen finden Sie im Migrationsleitfaden und in der Beispiel-App.
Anleitung zum Verwenden von ViewPager2 zum Wechseln zwischen Fragmenten
Version 1.0.0-rc01
23. Oktober 2019
androidx.viewpager2:viewpager2:1.0.0-rc01 wird 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 ist veröffentlicht. Version 1.0.0-beta05 enthält diese Commits.
Diverse Fehlerkorrekturen
- Problem behoben:
requestFocusauf einer Seite, die nicht auf dem Bildschirm angezeigt wird, führt zu einem Seitenwechsel. Das Verhalten entspricht jetzt dem ursprünglichen ViewPager. (b/140656866) - Problem behoben:
focusbleibt nach einem Seitenwechsel auf einer Seite, die nicht auf dem Bildschirm angezeigt wird. Der Fokus wird jetzt beim Ändern der Seite gelöscht. (b/140656866) - Problem mit der Reihenfolge von
Fragment-Transaktionen beim Pausieren / Fortsetzen beim Ändern der Seite behoben (wir pausieren jetzt immer das alte primäre Element, bevor wir das neue fortsetzen). (b/139489059) - Korrektur für
canScrollHorizontally(int)undcanScrollVertically(int): Sie geben jetzt zurück, ob ViewPager2 in die angegebene Richtung scrollen kann. (b/141848404) - Ein Problem in SwipeRefreshLayout wurde behoben, damit es besser mit ViewPager2 funktioniert.
Version 1.0.0-beta04
5. September 2019
androidx.viewpager2:viewpager2:1.0.0-beta04 ist veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Diverse Fehlerkorrekturen
- Ein Grenzfallproblem mit dem
Fragment-Backstack inFragmentStateAdapterwurde behoben. (b/139095195) - Das Problem, dass bei
EditTextmit bestimmten Attributkonfigurationen beim Tippen oder Fokussieren ein Scrollen oder Seitenwechsel ausgelöst wurde, wurde behoben. (b/138044582, b/139432498) - Ein Problem mit
ItemDecoration-Instanzen wurde behoben. Außerdem gibt es eine Problemumgehung für die Positionierung der Overscroll-Anzeige. (b/139012032) - In anderen Komponenten wurden eine Reihe von Problemen behoben, damit sie besser mit
ViewPager2funktionieren: RecyclerView, NestedScrollView und Navigation.
Version 1.0.0-beta03
7. August 2019
androidx.viewpager2:viewpager2:1.0.0-beta03 ist veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Diverse Fehlerkorrekturen
- Problem mit
FragmentStateAdapterim vorübergehenden StatusFragmentbehoben. b/134246546 - Problem mit
currentItem- undscrollState-Elementen behoben, wenn ein Dataset während eines sanften Scrollvorgangs geändert wird (Grenzfälle berücksichtigt). b/137642608 - Problem behoben, bei dem
PageTransformer-Animationen (einschließlichMarginPageTransformer) mit Animationen für Änderungen am Dataset in Konflikt standen. b/134658996 - Problem mit Smooth-Scroll-Animationen in großen Datasets behoben (
float-Grenzwert für Ganzzahlwerte). b/134858960
Version 1.0.0-beta02
19. Juli 2019
androidx.viewpager2:viewpager2:1.0.0-beta02 ist veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Diverse Fehlerkorrekturen
- Die unbeabsichtigte Jacoco-Abhängigkeit, die in
1.0.0-beta01eingeführt wurde, wurde entfernt. (b/137782951)
Version 1.0.0-beta01
17. Juli 2019
androidx.viewpager2:viewpager2:1.0.0-beta01 ist veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Diverse Fehlerkorrekturen
- Fehlerbehebung für
ViewPager2.updateCurrentItem-Absturz beim Scrollen und Aktualisieren des Datensatzes - Behebung eines Absturzes von
NullPointerExceptionim Zusammenhang mitViewPager2.isLayoutRtl TOUCH_SLOP_PAGINGist jetzt ein standardmäßiger Touch-ToleranzbereichOnPageChangeCallback-Ereignisse für leere Adapter korrigiert (Seite0anstelle von-1, um mitViewPager1übereinzustimmen)
Bekannte Probleme
- Wir arbeiten noch an den verbleibenden offenen Problemen, bevor wir zur stabilen Version wechseln.
Version 1.0.0-alpha06
2. Juli 2019
androidx.viewpager2:viewpager2:1.0.0-alpha06 ist veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Dies ist die letzte geplante Alphaphase, bevor die API eingefroren und zur Betaphase übergegangen wird. Bitte geben Sie uns Feedback zur API.
Neue Funktionen
- Grundlagen für verbesserte Barrierefreiheit:
ACTION_PAGE_RIGHT,ACTION_PAGE_DOWNusw.
API-Änderungen
FragmentStateAdapter: Die Anzahl der nicht primären ArtikelFragmentist aufSTARTEDbegrenzt und ihrmenuVisibilityist auf „false“ gesetzt.PageTransformer,MarginPageTransformer,CompositePageTransformer: Die Dokumentation fürpositionwurde korrigiert.
Diverse Fehlerkorrekturen
currentItemnach Änderung des Datasets / Adapters behoben.- Das Problem mit
MarginPageTransformerundoffscreenPageLimitwurde behoben. - Bedienungshilfen-Aktionen im
FakeDrag-Verhalten wurden korrigiert.
Version 1.0.0-alpha05
5. Juni 2019
androidx.viewpager2:viewpager2:1.0.0-alpha05 ist veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
ItemDecoratormit einem Verhalten, das mitRecyclerViewübereinstimmt.MarginPageTransformerwurde eingeführt, um die Möglichkeit zu bieten, zwischen Seiten (außerhalb des Seiteneinsatzes) Platz zu schaffen.CompositePageTransformerwurde eingeführt, um mehrerePageTransformers kombinieren zu können.
API-Änderungen
- Die Methode
FragmentStateAdapter#getItemwurde inFragmentStateAdapter#createFragmentumbenannt. Der vorherige Methodenname hat sich in der Vergangenheit als Fehlerquelle erwiesen. - Der Wert von
OFFSCREEN_PAGE_LIMIT_DEFAULThat sich von0in-1geändert. Wenn dieOFFSCREEN_PAGE_LIMIT_DEFAULT-Konstante verwendet wird, ist keine Änderung des Clientcodes erforderlich.
Diverse Fehlerkorrekturen
- Das
getCurrentItem()-Verhalten wurde korrigiert, wennSCROLL_STATE_SETTLINGdurch Ziehen in die entgegengesetzte Richtung unterbrochen wird. FragmentStateAdapter– Probleme mit dem Klassenlader, die im Kontext „Aktivitäten nicht beibehalten“ behoben wurden.- Die Dokumentation zu
setOffscreenPageLimitwurde verbessert.
Version 1.0.0-alpha04
7. Mai 2019
androidx.viewpager2:viewpager2:1.0.0-alpha04 ist veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
offscreenPageLimit: Ermöglicht eine genaue Steuerung der Anzahl der Seiten-View/Fragment, die in der Ansichtshierarchie beibehalten werden.
API-Änderungen
- Die Attribute
orientationundisUserScrollablesind nicht mehr Teil vonSavedState - Die Methoden
saveStateundrestoreStatewurden inFragmentStateAdapterfinalisiert. ViewPager2.Orientation- undViewPager2.ScrollState-Anmerkungen, die nicht öffentlich sind
Diverse Fehlerkorrekturen
SavedState: Es wurde ein Problem mit der Wiederherstellung behoben, wennActivityzerstört / neu erstellt wird.SavedState: Verzögertes Wiederherstellen, bis der Adapter festgelegt istOnPageChangeCallback: Geringfügige Grenzfälle behoben
Version 1.0.0-alpha03
3. April 2019
androidx.viewpager2:viewpager2:1.0.0-alpha03 ist veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
- ViewPager2 programmatisch scrollen:
fakeDragBy(offsetPx).
API-Änderungen
- Für
FragmentStateAdapterist jetzt einLifecycle-Objekt erforderlich. Es wurden zwei Hilfskonstruktoren hinzugefügt, um sie vom HostFragmentActivityoder vom HostFragmentabzurufen.
Diverse Fehlerkorrekturen
- Zahlreiche Korrekturen für die
Fragment-Unterstützung:- Aktualisierungen von Datasets im minimierten Zustand oder während einer Bildschirmdrehung verarbeiten
- Entfernen irrelevanter Fragmente nach der Rotation
- Entfernen des gespeicherten Status entfernter Elemente.
PageChangeCallback: Berechnung des festen Seitenversatzes für Seiten mit Rändern.
Version 1.0.0-alpha02
13. März 2019
androidx.viewpager2:viewpager2:1.0.0-alpha02 ist veröffentlicht. Eine vollständige Liste der in dieser Version enthaltenen Commits finden Sie hier.
Neue Funktionen
- Nutzereingaben deaktivieren (
setUserInputEnabled,isUserInputEnabled)
API-Änderungen
- ViewPager2-Klasse – final
Diverse Fehlerkorrekturen
FragmentStateAdapterFehlerkorrekturen zur Verbesserung der Stabilität
Version 1.0.0-alpha01
07. Februar 2019
androidx.viewpager2:viewpager2 1.0.0-alpha01 ist veröffentlicht. Dies ist die erste Version von ViewPager2.
Neue Funktionen
- Im Vergleich zum Vorgänger
android.support.v4.view.ViewPager(VP1):- Unterstützung von Layouts mit Leserichtung von rechts nach links (RTL)
- Unterstützung der vertikalen Ausrichtung
notifyDataSetChangedvoll funktionsfähig (VP1-Bugs behoben)
API-Änderungen
FragmentStateAdapterersetztFragmentStatePagerAdapterRecyclerView.AdapterersetztPagerAdapterregisterOnPageChangeCallbackersetztaddPageChangeListener
Bekannte Probleme
- clipToPadding
- no fakeDrag
- JavaDoc
- Verschachteltes Scrollen parallel zur Ausrichtung
- Keine Offscreen-Limit-Steuerung
- Bessere TabLayout-Integration erforderlich
- Kein Setter für die Seitenbreite (erzwungene 100%/100%)
- Seitentransformator: keine Auswahl von Hardware-/Softwareebenen; keine umgekehrte Zeichenreihenfolge
- Aktuelles Element sichtbar lassen, wenn eine Seite vor dem aktuellen Element eingefügt wird
- Tastaturnavigation muss verbessert werden
FragmentStateAdapterStabilitäts- und Leistungsverbesserungen