ViewPager2
| Najnowsza aktualizacja | Wersja stabilna | Kandydat do wydania | Wersja Beta | Wersja alfa | 
|---|---|---|---|---|
| 14 maja 2024 r. | 1.1.0 | - | - | - | 
Zależności AndroidaX
Aby używać ViewPager2, dodaj do pliku build.gradle projektu następującą zależność AndroidX:
Odlotowe
dependencies { implementation "androidx.viewpager2:viewpager2:1.1.0" }
Kotlin
dependencies { implementation("androidx.viewpager2:viewpager2:1.1.0") }
Opinia
Twoja opinia pomoże nam ulepszyć Jetpacka. Jeśli zauważysz nowe problemy lub masz pomysły na ulepszenie tej biblioteki, daj nam znać. Zanim utworzysz nowy problem, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz dodać swój głos do istniejącego problemu, klikając przycisk z gwiazdką.
Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.
Wersja 1.1.0
Wersja 1.1.0
14 maja 2024 r.
androidx.viewpager2:viewpager2:1.1.0 został zwolniony. Wersja 1.1.0 zawiera te komisy.
Ważne zmiany od wersji 1.0.0
- Usunięto awarie występujące podczas korzystania z elementu RecyclerView 1.3.1-rc01lub nowszego.
- ViewPager2teraz prawidłowo wypełnia pola- CollectionInfoi- CollectionItemInfo, które w komponencie RecyclerView- 1.2.0-alpha02i wyższym nie są już domyślnie wypełniane.
- Dodano interfejs FragmentTransactionCallbackdo nasłuchiwania zmian cyklu życia fragmentu, które występują w ramachFragmentStateAdapter.
- Rozwiązaliśmy problem FragmentStateAdapterz widocznością menu początkowego fragmentu podczas dodawania fragmentu doFragmentManager.
- Naprawiono wysyłanie wstawionych okien: wszystkie strony mają teraz te same wstawione okna. Ze względu na sposób wysyłania WindowInsetsw starszych wersjach interfejsu API (< API 30) może to uniemożliwiać wyświetlanie wstawionych elementów w powiązanych widokach. Jeśli chcesz stosować wstawione elementy na urządzeniach z wersją interfejsu API < 30, musisz włączyć tę poprawkę za pomocąWindowInsetsApplier.install(viewPager2).
Wersja 1.1.0-rc01
1 maja 2024 r.
androidx.viewpager2:viewpager2:1.1.0-rc01 jest wydana bez istotnych zmian w porównaniu z 1.1.0-beta02. Wersja 1.1.0-rc01 zawiera te zatwierdzenia.
Wersja 1.1.0-beta02
24 maja 2023 r.
Usługa androidx.viewpager2:viewpager2:1.1.0-beta02 została zwolniona. Wersja 1.1.0-beta02 zawiera te commity.
Zmiany w interfejsie API
- Dodano do FragmentTransactionCallbackwywołania obsługi zapisywania stanu fragmentu. (I45b90)
- ViewPager2nie próbuje już naprawiać uszkodzonego rozsyłania- WindowInsetsw starszych wersjach interfejsu API (< 30), ponieważ sama poprawka może być szkodliwa dla elementów pokrewnych- ViewPager2. Naprawka jest nadal dostępna, ale wymaga zgody, aby deweloperzy mogli decydować o każdym przypadku z osobna. Aby włączyć tę poprawkę, zadzwoń pod numer- WindowInsetsApplier.install(viewPager2)). (Ic9a85)
Poprawki błędów
- Rozwiązanie problemów ze zgodnością z nowszymi wersjami RecyclerView. Użytkownicy tej wersjiViewPager2powinni zaktualizować ją co najmniej do wersjiRecyclerView1.3.1-rc01.
Wersja 1.1.0-beta01
4 sierpnia 2021 r.
androidx.viewpager2:viewpager2:1.1.0-beta01 został zwolniony. Wersja 1.1.0-beta01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Uaktualnij androidx, aby używać Kotlina 1.4 (Id6471, b/165307851, b/165300826). 
- Przejście na kierowanie na Javę 8 we wszystkich bibliotekach androidx (2923f39) 
Poprawki błędów
- Naprawiono wysyłanie wstawionych okien. Wszystkie strony mają teraz te same wstawione okna. (I47fef)
Wersja 1.1.0-alpha01
1 kwietnia 2020 r.
androidx.viewpager2:viewpager2:1.1.0-alpha01 został zwolniony. Wersja 1.1.0-alpha01 zawiera te commity.
W tej wersji wprowadzono zmianę w RecyclerView 1.2.0-alpha02, która polega na wypełnieniu pól CollectionInfo i CollectionItemInfo, których RecyclerView nie udostępnia już domyślnie. Podczas aktualizacji do wersji RecyclerView 1.2.0-alpha02 zaktualizuj też wersję ViewPager2, aby zapobiec regresji funkcji ułatwień dostępu.
Nowe funkcje
- Dodano interfejs FragmentTransactionCallbackdo nasłuchiwania zmian cyklu życia fragmentu, które występują w ramachFragmentStateAdapter. (Ibda77)
Poprawki błędów
- Rozwiązaliśmy problem FragmentStateAdapterz widocznością menu początkowego fragmentu podczas dodawania fragmentu doFragmentManager. (I9d2ff, b/144442240)
Wersja 1.0.0
Wersja 1.0.0
20 listopada 2019 r.
androidx.viewpager2:viewpager2:1.0.0 jest wydana bez zmian w wersji 1.0.0-rc01.  Wersja 1.0.0 zawiera te zatwierdzenia.
Najważniejsze funkcje wersji 1.0.0
- Ulepszenia w porównaniu z poprzednią implementacją ViewPager:- Obsługa układu RTL (od prawej do lewej)
- Obsługa orientacji pionowej
- niezawodne obsługiwanie Fragment(w tym obsługa zmian w podstawowej kolekcjiFragment);
- animacje zmiany zbioru danych (w tym obsługa DiffUtil),
 
- Łatwa migracja z poprzedniej implementacji ViewPager(w miarę możliwości z użyciem interfejsu API). Zapoznaj się z przewodnikiem po migracji i przykładową aplikacją.
Zapoznaj się z przewodnikiem dotyczącym używania ViewPager2 do przesuwania się między fragmentami.
Wersja 1.0.0-rc01
23 października 2019 r.
androidx.viewpager2:viewpager2:1.0.0-rc01 jest publikowany bez zmian od 1.0.0-beta05.  Wersja 1.0.0-rc01 zawiera te zatwierdzenia:
Wersja 1.0.0-beta05
9 października 2019 r.
androidx.viewpager2:viewpager2:1.0.0-beta05 został zwolniony.  Wersja 1.0.0-beta05 zawiera te commity
Poprawki błędów
- Poprawka dotycząca requestFocusna stronie poza ekranem, która powoduje zmianę strony. Zachowanie jest teraz spójne z pierwotnym ViewPager. (b/140656866)
- Naprawiono błąd, który po zmianie strony pozostawał na stronie poza ekranem (focus). Podczas zmiany strony zaznaczenie zostanie wyczyszczone. (b/140656866)
- Poprawka dotycząca kolejności wstrzymywania i wznawiania transakcji Fragmentpodczas zmiany strony (teraz zawsze wstrzymujemy stare podstawowe zamówienie, zanim wznowimy nowe). (b/139489059)
- Poprawka dotycząca canScrollHorizontally(int)icanScrollVertically(int)– teraz zwracają one informacje o tym, czy ViewPager2 może przewijać w danym kierunku. (b/141848404)
- Rozwiązaliśmy problem z elementem SwipeRefreshLayout, aby lepiej współpracował z elementem ViewPager2.
Wersja 1.0.0-beta04
5 września 2019 r.
androidx.viewpager2:viewpager2:1.0.0-beta04 został zwolniony.  Zmiany zawarte w tej wersji znajdziesz tutaj.
Poprawki błędów
- Rozwiązanie problemu FragmentStateAdapterz rzadko występującym błędem w komponencieFragment. (b/139095195)
- Rozwiązanie problemu z EditTextw przypadku niektórych konfiguracji atrybutów, które powodowały przewijanie lub przeskoki strony podczas pisania lub skupiania się na tekście. (b/138044582, b/139432498)
- Rozwiązanie problemu z występowaniem ItemDecorationoraz obejście problemu z pozycjonowaniem wskaźnika przewijania. (B/139012032)
- Naprawiliśmy kilka problemów w innych komponentach, aby lepiej współpracowały z ViewPager2: RecyclerView, NestedScrollView i Navigation.
Wersja 1.0.0-beta03
7 sierpnia 2019 r.
Usługa androidx.viewpager2:viewpager2:1.0.0-beta03 została zwolniona.  Zmiany zawarte w tej wersji znajdziesz tutaj.
Poprawki błędów
- Rozwiązanie problemu z FragmentStateAdapterze stanemFragmentprzejściowym. b/134246546
- Rozwiązanie problemów currentItemiscrollState, gdy zestaw danych jest zmieniany podczas płynnego przewijania (rozwiązano przypadki skrajne). b/137642608
- Poprawka błędu animacji PageTransformer(w tymMarginPageTransformer) powodujących konflikt z animacjami zmian w zestawie danych. b/134658996
- Poprawiono płynne animacje przewijania w dużych zbiorach danych (floatlimit wartości całkowitej). b/134858960
Wersja 1.0.0-beta02
19 lipca 2019 r.
androidx.viewpager2:viewpager2:1.0.0-beta02 został zwolniony.  Zmiany zawarte w tej wersji znajdziesz tutaj.
Poprawki błędów
- Usunięto niezamierzoną zależność jacoco w 1.0.0-beta01. (b/137782951)
Wersja 1.0.0-beta01
17 lipca 2019 r.
androidx.viewpager2:viewpager2:1.0.0-beta01 został zwolniony.  Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Poprawki błędów.
- Rozwiązanie problemu z zawieszaniem się ViewPager2.updateCurrentItempodczas przewijania i aktualizowania zbioru danych
- Rozwiązanie problemu z awarią NullPointerExceptionzwiązanego zViewPager2.isLayoutRtl
- TOUCH_SLOP_PAGINGjest teraz domyślną wartością slop
- Naprawiono zdarzenia OnPageChangeCallbackw przypadku pustych adapterów (strona0zamiast-1, aby zachować zgodność zViewPager1).
Znane problemy
- Przed przejściem na wersję stabilną nadal pracujemy nad pozostającymi otwartymi problemami.
Wersja 1.0.0-alpha06
2 lipca 2019 r.
Usługa androidx.viewpager2:viewpager2:1.0.0-alpha06 została zwolniona.  Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
To ostatnia zaplanowana wersja alfa przed zamrożeniem interfejsu API i przejściem na wersję beta. Prześlij nam opinię na temat interfejsu API.
Nowe funkcje
- podstawy ułatwień dostępu: ACTION_PAGE_RIGHT,ACTION_PAGE_DOWNitd.
Zmiany w interfejsie API
- FragmentStateAdapter: liczba elementów innych niż głównych- Fragmentjest ograniczona do- STARTED, a ich- menuVisibilityma wartość false.
- PageTransformer,- MarginPageTransformer,- CompositePageTransformer: dokumentacja dla- positionnaprawiona.
Poprawki błędów
- currentItempo zmianie zestawu danych / adaptera.
- MarginPageTransformerz- offscreenPageLimitproblemem naprawionym.
- Naprawiono działanie funkcji ułatwień dostępu w trybie FakeDrag.
Wersja 1.0.0-alpha05
5 czerwca 2019 r.
Usługa androidx.viewpager2:viewpager2:1.0.0-alpha05 została zwolniona.  Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Nowe funkcje
- ItemDecoratorwprowadzony z zachowaniem zachowania zgodnego z- RecyclerView.
- MarginPageTransformerwprowadzono, aby umożliwić tworzenie przestrzeni między stronami (poza wstawką strony).
- Wprowadziliśmy CompositePageTransformer, aby umożliwić łączenie wieluPageTransformer.
Zmiany w interfejsie API
- Metoda FragmentStateAdapter#getItemzostała przemianowana naFragmentStateAdapter#createFragment– poprzednia nazwa metody w przeszłości powodowała błędy.
- Zmieniono wartość parametru OFFSCREEN_PAGE_LIMIT_DEFAULTz0na-1. Jeśli używasz stałej wartościOFFSCREEN_PAGE_LIMIT_DEFAULT, nie musisz wprowadzać zmian w kodzie klienta.
Poprawki błędów
- Poprawiono działanie funkcji getCurrentItem(), gdySCROLL_STATE_SETTLINGzostanie przerwane przez przeciąganie w przeciwnym kierunku.
- FragmentStateAdapterProblemy z ładownikiem klas rozwiązane w kontekście „Nie przechowuj działań”.
- Ulepszono dokumentację setOffscreenPageLimit.
Wersja 1.0.0-alpha04
7 maja 2019 r.
androidx.viewpager2:viewpager2:1.0.0-alpha04 został zwolniony.  Zmiany zawarte w tej wersji znajdziesz tutaj.
Nowe funkcje
- offscreenPageLimit: umożliwia ścisłą kontrolę liczby stron- View/- Fragmentprzechowywanych w hierarchii widoku.
Zmiany w interfejsie API
- Atrybuty orientationiisUserScrollablenie są już częściąSavedState
- Metody saveStateirestoreStatezostały uznane za ostateczne wFragmentStateAdapter
- adnotacje ViewPager2.OrientationiViewPager2.ScrollStatezostały oznaczone jako prywatne.
Poprawki błędów.
- SavedState: usunięto problem z przywracaniem po zniszczeniu / odtworzeniu zasobu- Activity
- SavedState: przywracanie jest opóźnione do czasu ustawienia adaptera
- OnPageChangeCallback: usunięto drobne przypadki skrajne
Wersja 1.0.0-alpha03
3 kwietnia 2019 r.
androidx.viewpager2:viewpager2:1.0.0-alpha03 został zwolniony.  Zmiany zawarte w tej wersji znajdziesz tutaj.
Nowe funkcje
- Możliwość programowego przewijania ViewPager2: fakeDragBy(offsetPx).
Zmiany interfejsu API
- FragmentStateAdapterwymaga teraz obiektu- Lifecycle. Dodano 2 konstruktory pomocnicze do uzyskiwania wartości z hosta- FragmentActivitylub hosta- Fragment.
Poprawki błędów
- Wiele poprawek dotyczących obsługi Fragment:- obsługa aktualizacji zbioru danych podczas zminimalizowania ich lub podczas obracania ekranu;
- usuwanie nieistotnych fragmentów po rotacji;
- usunięcie zapisanego stanu usuniętych elementów.
 
- PageChangeCallback: poprawiono obliczenie przesunięcia strony w przypadku stron z marginesami.
Wersja 1.0.0-alpha02
13 marca 2019 r.
Usługa androidx.viewpager2:viewpager2:1.0.0-alpha02 została zwolniona.  Pełną listę zatwierdzeń zawartych w tej wersji znajdziesz tutaj.
Nowe funkcje
- Możliwość wyłączenia danych wejściowych użytkownika (setUserInputEnabled,isUserInputEnabled)
Zmiany w interfejsie API
- Końcowa klasa ViewPager2
Poprawki błędów.
- FragmentStateAdapterpoprawki stabilności
Wersja 1.0.0-alpha01
7 lutego 2019 r.
androidx.viewpager2:viewpager2  1.0.0-alpha01 został zwolniony.  To pierwsza wersja ViewPager2.
Nowe funkcje
- W porównaniu z poprzednikiem android.support.v4.view.ViewPager(VP1):- Obsługa układu od prawej do lewej
- Obsługa orientacji pionowej
- notifyDataSetChangedw pełni funkcjonalna (usterki VP1 zostały naprawione);
 
Zmiany w interfejsie API
- FragmentStateAdapterzastępuje- FragmentStatePagerAdapter
- RecyclerView.Adapterzastępuje- PagerAdapter
- registerOnPageChangeCallbackzastępuje- addPageChangeListener
Znane problemy
- clipToPadding
- no fakeDrag
- JavaDoc
- Nested Scrolling Parallel to Orientation
- brak elementu sterującego ustawieniem limitu poza ekranem
- wymaga lepszej integracji z układem kart
- brak parametru pageWidth (wymuszone na 100%/100%)
- Transformer strony: brak możliwości wyboru warstwy sprzętu i oprogramowania, brak odwrotnej kolejności rysowania
- keep current item visible when inserting a page before current
- Nawigacja za pomocą klawiatury wymaga poprawek
- Wkrótce wprowadzimy FragmentStateAdapterpoprawę stabilności lub wydajności
