ViewPager2

Ansichten oder Fragmente in einem wischbaren Format anzeigen
Letzte Aktualisierung Stabile Version Release Candidate Beta-Ausgabe Alphaversion
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:

Groovy

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. Bitte teilen Sie uns mit, wenn Sie neue Probleme feststellen oder Ideen zur Verbesserung dieser Bibliothek haben. Sehen Sie sich die vorhandenen Probleme in dieser Bibliothek an, bevor Sie ein neues erstellen. Sie können einem vorhandenen Problem Ihre Stimme geben, indem Sie auf die Schaltfläche mit dem Stern klicken.

Neues Problem erstellen

Weitere Informationen finden Sie in der Dokumentation zur Problemverfolgung.

Version 1.1.0

Version 1.1.0

14. Mai 2024

androidx.viewpager2:viewpager2:1.1.0 wurde veröffentlicht. Version 1.1.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.0.0

  • Behebung von Abstürzen bei Verwendung mit RecyclerView 1.3.1-rc01 oder höher.
  • ViewPager2 füllt jetzt die CollectionInfo und CollectionItemInfo korrekt aus, die bei RecyclerView 1.2.0-alpha02 und höher nicht mehr standardmäßig ausgefüllt werden.
  • Die FragmentTransactionCallback-Benutzeroberfläche wurde hinzugefügt, um Änderungen am Lebenszyklus von Fragmenten in FragmentStateAdapter zu erfassen.
  • Das Problem FragmentStateAdapter mit der anfänglichen Sichtbarkeit des Fragmentmenüs beim Hinzufügen eines Fragments zu FragmentManager wurde behoben.
  • Korrigierter Versand von Fenster-Inset: Alle Seiten erhalten jetzt dieselben Inset-Werte. Da WindowInsets bei älteren API-Versionen (unter API 30) gesendet werden, kann es vorkommen, dass Einblendungen für untergeordnete Ansichten nicht verfügbar sind. Wenn Sie Einblendungen auf Geräten mit einer älteren API-Version anwenden möchten, müssen Sie diese Korrektur über WindowInsetsApplier.install(viewPager2) aktivieren.

Version 1.1.0-rc01

1. Mai 2024

androidx.viewpager2:viewpager2:1.1.0-rc01 wurde ohne nennenswerte Änderungen seit 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 veröffentlicht. Version 1.1.0-beta02 enthält diese Commits.

API-Änderungen

  • FragmentTransactionCallback enthält jetzt Rückruffunktionen zum Speichern des Fragmentstatus. (I45b90)
  • ViewPager2 versucht jetzt nicht mehr, den fehlerhaften WindowInsets-Versand von alten API-Versionen (< 30) zu korrigieren, da die Korrektur selbst schädlich für Geschwister von ViewPager2 sein kann. Die Korrektur ist weiterhin verfügbar, muss aber jetzt aktiviert werden, damit Entwickler von Fall zu Fall entscheiden können. Aktivieren Sie die Korrektur durch Aufrufen von WindowInsetsApplier.install(viewPager2)). (IC9a85)

Fehlerkorrekturen

  • Kompatibilitätsprobleme mit neueren Versionen von RecyclerView behoben Nutzer dieser Version von ViewPager2 sollten auf mindestens RecyclerView 1.3.1-rc01 aktualisieren.

Version 1.1.0-beta01

4. August 2021

androidx.viewpager2:viewpager2:1.1.0-beta01 wird veröffentlicht. Version 1.1.0-beta01 enthält diese Commits.

API-Änderungen

Fehlerkorrekturen

  • Der Versand von Fenster-Inset-Informationen wurde korrigiert. Alle Seiten erhalten jetzt dieselben Inset-Informationen. (I47fef)

Version 1.1.0-alpha01

1. April 2020

androidx.viewpager2:viewpager2:1.1.0-alpha01 wird veröffentlicht. Version 1.1.0-alpha01 enthält diese Commits.

Diese Version enthält eine Änderung in RecyclerView 1.2.0-alpha02. CollectionInfo und CollectionItemInfo werden jetzt von RecyclerView nicht mehr standardmäßig bereitgestellt. Aktualisieren Sie beim Update auf RecyclerView 1.2.0-alpha02 auch ViewPager2, um Rückschritte bei der Barrierefreiheit zu vermeiden.

Neue Funktionen

  • Die FragmentTransactionCallback-Benutzeroberfläche wurde hinzugefügt, um Änderungen am Lebenszyklus von Fragmenten in FragmentStateAdapter zu erfassen. (Ibda77)

Fehlerkorrekturen

  • Das Problem FragmentStateAdapter mit der anfänglichen Sichtbarkeit des Fragmentmenüs beim Hinzufügen eines Fragments zu FragmentManager 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.

Wichtige Funktionen von 1.0.0

  • Verbesserungen gegenüber der vorherigen ViewPager-Implementierung:
    • Unterstützung für linksläufige Layouts (RTL)
    • Unterstützung für vertikale Ausrichtung
    • Zuverlässige Fragment-Unterstützung (einschließlich der Verarbeitung von Änderungen an der zugrunde liegenden Fragment-Sammlung)
    • Animationen zu Dataset-Änderungen (einschließlich DiffUtil-Unterstützung)
  • Einfache Migration von der vorherigen ViewPager-Implementierung (API-Parität nach Möglichkeit). Weitere Informationen finden Sie im Migrationsleitfaden und in der Beispiel-App.

Weitere Informationen finden Sie im Leitfaden zur Verwendung von ViewPager2 für das Verschieben zwischen Fragmenten.

Version 1.0.0-rc01

23. Oktober 2019

androidx.viewpager2:viewpager2:1.0.0-rc01 wird seit 1.0.0-beta05 unverändert 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 veröffentlicht. Version 1.0.0-beta05 enthält diese Commits.

Fehlerkorrekturen

  • Behebung eines Problems, bei dem requestFocus auf einer nicht sichtbaren Seite zu einer Seitenänderung führte. Das Verhalten entspricht jetzt dem des ursprünglichen ViewPager. (b/140656866)
  • Behebung eines Problems, bei dem focus nach einer Seitenänderung auf einer nicht sichtbaren Seite verblieb. Der Fokus wird jetzt beim Seitenwechsel aufgehoben. (b/140656866)
  • Fehlerbehebung bei der Reihenfolge der Fragment-Transaktionen zum Pausieren / Fortsetzen beim Wechseln der Seite. Jetzt wird das alte primäre Element immer pausiert, bevor das neue fortgesetzt wird. (b/139489059)
  • Korrektur für canScrollHorizontally(int) und canScrollVertically(int): Es wird jetzt zurückgegeben, ob ViewPager2 in die angegebene Richtung scrollen kann. (b/141848404)
  • Ein Problem mit SwipeRefreshLayout wurde behoben, damit es besser mit ViewPager2 funktioniert.

Version 1.0.0-beta04

5. September 2019

androidx.viewpager2:viewpager2:1.0.0-beta04 wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Fehlerkorrekturen

  • Problem mit FragmentStateAdapter Grenzfallproblem mit Fragment Back-Stack behoben. (b/139095195)
  • Problem mit EditText behoben, bei dem bestimmte Attributkonfigurationen beim Tippen/Fokusieren zu einem Scrollen/Seitensprung geführt haben. (b/138044582, b/139432498)
  • Problem mit ItemDecoration-Instanzen behoben und Problemumgehung für die Positionierung des Indikators für das Überscrollen hinzugefügt (b/139012032)
  • Einige Fehler in anderen Komponenten wurden behoben, damit sie besser mit ViewPager2 funktionieren: RecyclerView, NestedScrollView und Navigation.

Version 1.0.0-beta03

7. August 2019

androidx.viewpager2:viewpager2:1.0.0-beta03 wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Fehlerkorrekturen

  • Problembehebung für FragmentStateAdapter mit vorübergehendem Fragment-Status. b/134246546
  • Behebung von currentItem- und scrollState-Problemen, wenn ein Datensatz während des reibungslosen Scrollens geändert wird (Grenzfälle behoben). b/137642608
  • Behebung eines Problems, bei dem PageTransformer-Animationen (einschließlich MarginPageTransformer) mit Dataset-Änderungsanimationen in Konflikt standen. b/134658996
  • Problem mit flüssigem Scrollen in großen Datensätzen behoben (float Ganzzahlgrenzwert). b/134858960

Version 1.0.0-beta02

19. Juli 2019

androidx.viewpager2:viewpager2:1.0.0-beta02 wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Fehlerkorrekturen

  • Die unbeabsichtigte Jacoco-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 wurde veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Fehlerkorrekturen

  • Behebung des Absturzes von ViewPager2.updateCurrentItem beim Scrollen und Aktualisieren des Datensatzes
  • Behebung eines Absturzes von NullPointerException im Zusammenhang mit ViewPager2.isLayoutRtl
  • TOUCH_SLOP_PAGING ist jetzt eine Standard-Touch Slop
  • Behebung von Problemen mit OnPageChangeCallback-Ereignissen für leere Adapter (Seite 0 statt -1 für Übereinstimmung mit ViewPager1)

Bekannte Probleme

Version 1.0.0-alpha06

2. Juli 2019

androidx.viewpager2:viewpager2:1.0.0-alpha06 wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Dies ist unsere letzte geplante Alphaversion, bevor die API eingefroren und in die Betaphase übergeht. Bitte gib uns Feedback zur API.

Neue Funktionen

  • Grundlagen für eine verbesserte Barrierefreiheit: ACTION_PAGE_RIGHT, ACTION_PAGE_DOWN usw.

API-Änderungen

  • FragmentStateAdapter: Fragment-Werte für nicht primäre Elemente sind auf STARTED begrenzt und ihre menuVisibility-Werte sind auf „false“ gesetzt.
  • PageTransformer, MarginPageTransformer, CompositePageTransformer: Dokumentation zu positionbehoben.

Fehlerkorrekturen

  • currentItem nach Änderung des Datensatzes / Adapters behoben.
  • Problem mit MarginPageTransformer und offscreenPageLimit behoben
  • Behobenes Verhalten von Bedienungshilfen-Aktionen in FakeDrag

Version 1.0.0-alpha05

5. Juni 2019

androidx.viewpager2:viewpager2:1.0.0-alpha05 wurde veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Neue Funktionen

  • ItemDecorator wurde mit einem Verhalten eingeführt, das mit RecyclerView übereinstimmt.
  • MarginPageTransformer wurde eingeführt, um Platz zwischen den Seiten zu schaffen (außerhalb des Seiteneinzugs).
  • CompositePageTransformer wurde eingeführt, um mehrere PageTransformers kombinieren zu können.

API-Änderungen

  • Die Methode FragmentStateAdapter#getItem wurde in FragmentStateAdapter#createFragment umbenannt. Der vorherige Methodenname war in der Vergangenheit eine Quelle für Fehler.
  • Der Wert für OFFSCREEN_PAGE_LIMIT_DEFAULT wurde von 0 in -1 geändert. Wenn die Konstante OFFSCREEN_PAGE_LIMIT_DEFAULT verwendet wird, sind keine Änderungen am Clientcode erforderlich.

Fehlerkorrekturen

  • Das Verhalten von getCurrentItem() wurde korrigiert, wenn SCROLL_STATE_SETTLING durch Ziehen in die entgegengesetzte Richtung unterbrochen wird.
  • Probleme mit dem Ladeprogramm von FragmentStateAdapter, die im Kontext „Aktivitäten nicht speichern“ behoben wurden.
  • setOffscreenPageLimit Dokumentation verbessert.

Version 1.0.0-alpha04

7. Mai 2019

androidx.viewpager2:viewpager2:1.0.0-alpha04 wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Neue Funktionen

  • offscreenPageLimit: ermöglicht eine genaue Kontrolle der Anzahl der SeitenView / Fragment, die in der Ansichtshierarchie gespeichert werden

API-Änderungen

  • Die Attribute orientation und isUserScrollable sind nicht mehr Teil von SavedState.
  • saveState und restoreState Methoden wurden FragmentStateAdapter endgültig festgelegt
  • Anmerkungen von ViewPager2.Orientation und ViewPager2.ScrollState wurden nicht mehr öffentlich zugänglich gemacht

Fehlerkorrekturen

  • SavedState: Behebung eines Problems beim Wiederherstellen, wenn Activity gelöscht und neu erstellt wird
  • SavedState: Wiederherstellung wird verzögert, bis der Adapter eingerichtet ist
  • OnPageChangeCallback: Behebung kleinerer Grenzfälle

Version 1.0.0-alpha03

3. April 2019

androidx.viewpager2:viewpager2:1.0.0-alpha03 wird veröffentlicht. Die in dieser Version enthaltenen Commits finden Sie hier.

Neue Funktionen

  • Möglichkeit zum programmatischen Scrollen von ViewPager2: fakeDragBy(offsetPx).

API-Änderungen

  • Für FragmentStateAdapter ist jetzt ein Lifecycle-Objekt erforderlich. Es wurden zwei Dienstkonstruktoren hinzugefügt, um die Daten vom Host FragmentActivity oder vom Host Fragment abzurufen.

Fehlerkorrekturen

  • Zahlreiche Fehlerkorrekturen für Fragment:
    • Verarbeitung von Datensatzaktualisierungen im minimierten Zustand oder bei einer Bildschirmdrehung
    • irrelevante Fragmente nach der Rotation entfernen;
    • Der gespeicherte Status entfernter Elemente wird entfernt.
  • PageChangeCallback: Feste Berechnung des Seitenversatzes für Seiten mit Rändern.

Version 1.0.0-alpha02

13. März 2019

androidx.viewpager2:viewpager2:1.0.0-alpha02 wurde veröffentlicht. Eine vollständige Liste der Commits in dieser Version finden Sie hier.

Neue Funktionen

  • Möglichkeit, die Nutzereingabe zu deaktivieren (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 veröffentlicht. Dies ist die erste Version von ViewPager2.

Neue Funktionen

  • Im Vergleich zum Vorgänger android.support.v4.view.ViewPager (VP1):
    • Unterstützung für Layouts mit einer Leserichtung von rechts nach links
    • Unterstützung für vertikale Ausrichtung
    • notifyDataSetChanged Vollständig funktionsfähig (VP1-Fehler behoben)

API-Änderungen

  • FragmentStateAdapter ersetzt FragmentStatePagerAdapter
  • RecyclerView.Adapter ersetzt PagerAdapter
  • registerOnPageChangeCallback ersetzt addPageChangeListener

Bekannte Probleme

  • clipToPadding
  • no fakeDrag
  • JavaDoc
  • verschachtelte Scrollbalken parallel zur Ausrichtung
  • keine Einstellung für die Zeit, in der der Bildschirm ausgeschaltet ist
  • Bessere TabLayout-Integration erforderlich
  • kein pageWidth-Setter (erzwungene 100%/100%)
  • Seitentransformator: keine Auswahl der Hardware-/Softwareebene; keine umgekehrte Zeichenreihenfolge
  • Aktuelles Element sichtbar lassen, wenn eine Seite vor der aktuellen Seite eingefügt wird
  • Tastaturnavigation muss verbessert werden
  • FragmentStateAdapter Verbesserungen bei Stabilität / Leistung