ViewPager2

Ansichten oder Fragmente in einem wischbaren Format anzeigen.
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.

Neues Problem melden

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-rc01 oder höher.
  • ViewPager2 füllt jetzt die CollectionInfo und CollectionItemInfo korrekt aus, die in RecyclerView 1.2.0-alpha02 und höher nicht mehr standardmäßig ausgefüllt werden.
  • Die FragmentTransactionCallback-Schnittstelle wurde hinzugefügt, um auf Änderungen des Fragmentlebenszyklus zu reagieren, die in FragmentStateAdapter auftreten.
  • Das FragmentStateAdapter-Problem mit der anfänglichen Sichtbarkeit des Fragmentmenüs beim Hinzufügen eines Fragments zum FragmentManager wurde behoben.
  • Das Senden von Fenstereinsetzungen wurde korrigiert: Alle Seiten erhalten jetzt dieselben Einsetzungen. Da WindowInsets in 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 ü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 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 FragmentTransactionCallback wurden Callbacks zum Speichern des Fragmentstatus hinzugefügt. (I45b90)
  • ViewPager2 versucht jetzt nicht mehr, den fehlerhaften WindowInsets-Versand alter API-Versionen (< 30) zu beheben, da die Korrektur selbst für Geschwister von ViewPager2 schä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 Sie WindowInsetsApplier.install(viewPager2)) aufrufen. (Ic9a85)

Fehlerkorrekturen

  • Kompatibilitätsprobleme mit neueren Versionen von RecyclerView beheben Nutzer dieser Version von ViewPager2 sollten mindestens auf RecyclerView 1.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

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 in FragmentStateAdapter auftreten. (Ibda77)

Fehlerkorrekturen

  • Das FragmentStateAdapter-Problem mit der anfänglichen Sichtbarkeit des Fragmentmenüs beim Hinzufügen eines Fragments zum FragmentManager wurde 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 liegenden Fragment-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: requestFocus auf 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: focus bleibt 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) und canScrollVertically(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 in FragmentStateAdapter wurde behoben. (b/139095195)
  • Das Problem, dass bei EditText mit 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 ViewPager2 funktionieren: 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 FragmentStateAdapter im vorübergehenden Status Fragment behoben. b/134246546
  • Problem mit currentItem- und scrollState-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ßlich MarginPageTransformer) 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-beta01 eingefü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 NullPointerException im Zusammenhang mit ViewPager2.isLayoutRtl
  • TOUCH_SLOP_PAGING ist jetzt ein standardmäßiger Touch-Toleranzbereich
  • OnPageChangeCallback-Ereignisse für leere Adapter korrigiert (Seite 0 anstelle von -1, um mit ViewPager1 übereinzustimmen)

Bekannte Probleme

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_DOWN usw.

API-Änderungen

  • FragmentStateAdapter: Die Anzahl der nicht primären Artikel Fragment ist auf STARTED begrenzt und ihr menuVisibility ist auf „false“ gesetzt.
  • PageTransformer, MarginPageTransformer, CompositePageTransformer: Die Dokumentation für position wurde korrigiert.

Diverse Fehlerkorrekturen

  • currentItem nach Änderung des Datasets / Adapters behoben.
  • Das Problem mit MarginPageTransformer und offscreenPageLimit wurde 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

  • ItemDecorator mit einem Verhalten, das mit RecyclerView übereinstimmt.
  • MarginPageTransformer wurde eingeführt, um die Möglichkeit zu bieten, zwischen Seiten (außerhalb des Seiteneinsatzes) Platz zu schaffen.
  • 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 hat sich in der Vergangenheit als Fehlerquelle erwiesen.
  • Der Wert von OFFSCREEN_PAGE_LIMIT_DEFAULT hat sich von 0 in -1 geändert. Wenn die OFFSCREEN_PAGE_LIMIT_DEFAULT-Konstante verwendet wird, ist keine Änderung des Clientcodes erforderlich.

Diverse Fehlerkorrekturen

  • Das getCurrentItem()-Verhalten wurde korrigiert, wenn SCROLL_STATE_SETTLING durch Ziehen in die entgegengesetzte Richtung unterbrochen wird.
  • FragmentStateAdapter – Probleme mit dem Klassenlader, die im Kontext „Aktivitäten nicht beibehalten“ behoben wurden.
  • Die Dokumentation zu setOffscreenPageLimit wurde 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 orientation und isUserScrollable sind nicht mehr Teil von SavedState
  • Die Methoden saveState und restoreState wurden in FragmentStateAdapter finalisiert.
  • ViewPager2.Orientation- und ViewPager2.ScrollState-Anmerkungen, die nicht öffentlich sind

Diverse Fehlerkorrekturen

  • SavedState: Es wurde ein Problem mit der Wiederherstellung behoben, wenn Activity zerstört / neu erstellt wird.
  • SavedState: Verzögertes Wiederherstellen, bis der Adapter festgelegt ist
  • OnPageChangeCallback: 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 FragmentStateAdapter ist jetzt ein Lifecycle-Objekt erforderlich. Es wurden zwei Hilfskonstruktoren hinzugefügt, um sie vom Host FragmentActivity oder vom Host Fragment abzurufen.

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

  • FragmentStateAdapter Fehlerkorrekturen 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
    • notifyDataSetChanged voll funktionsfähig (VP1-Bugs behoben)

API-Änderungen

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

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
  • FragmentStateAdapter Stabilitäts- und Leistungsverbesserungen