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 polaCollectionInfoiCollectionItemInfo, które w komponencie RecyclerView1.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łaniaWindowInsetsw starszych wersjach interfejsu API (< 30), ponieważ sama poprawka może być szkodliwa dla elementów pokrewnychViewPager2. 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 numerWindowInsetsApplier.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łównychFragmentjest ograniczona doSTARTED, a ichmenuVisibilityma wartość false.PageTransformer,MarginPageTransformer,CompositePageTransformer: dokumentacja dlapositionnaprawiona.
Poprawki błędów
currentItempo zmianie zestawu danych / adaptera.MarginPageTransformerzoffscreenPageLimitproblemem 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 zRecyclerView.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 stronView/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 zasobuActivitySavedState: przywracanie jest opóźnione do czasu ustawienia adapteraOnPageChangeCallback: 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 obiektuLifecycle. Dodano 2 konstruktory pomocnicze do uzyskiwania wartości z hostaFragmentActivitylub hostaFragment.
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ępujeFragmentStatePagerAdapterRecyclerView.AdapterzastępujePagerAdapterregisterOnPageChangeCallbackzastępujeaddPageChangeListener
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