ViewPager2
| Najnowsza aktualizacja | Wersja stabilna | Wersja kandydująca do publikacji | Wersja beta | Wersja alfa |
|---|---|---|---|---|
| 14 maja 2024 r. | 1.1.0 | - | - | - |
Zależności AndroidX
Aby używać ViewPager2, dodaj do pliku build.gradle projektu tę zależność AndroidX:
Odlotowe
dependencies { implementation "androidx.viewpager2:viewpager2:1.1.0" }
Kotlin
dependencies { implementation("androidx.viewpager2:viewpager2:1.1.0") }
Prześlij opinię
Twoja opinia pomoże nam ulepszyć Jetpacka. Jeśli odkryjesz nowe problemy lub masz pomysły na ulepszenie tej biblioteki, daj nam znać. Zanim utworzysz nową kartę, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz oddać głos na istniejący problem, klikając przycisk gwiazdki.
Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.
Wersja 1.1.0
Wersja 1.1.0
14 maja 2024 r.
Publikacja androidx.viewpager2:viewpager2:1.1.0 Wersja 1.1.0 zawiera te zmiany.
Ważne zmiany od wersji 1.0.0
- Usunięto awarie, które występowały podczas korzystania z RecyclerView
1.3.1-rc01lub nowszej wersji. ViewPager2prawidłowo wypełnia teraz polaCollectionInfoiCollectionItemInfo, które w przypadku RecyclerView1.2.0-alpha02i nowszych nie są już wypełniane domyślnie.- Dodaliśmy interfejs
FragmentTransactionCallbackdo nasłuchiwania zmian cyklu życia fragmentu, które zachodzą wFragmentStateAdapter. - Rozwiązaliśmy problem
FragmentStateAdapterz początkową widocznością menu fragmentu podczas dodawania fragmentu doFragmentManager. - Naprawiono wysyłanie wstawek okien: wszystkie strony otrzymują teraz te same wstawki. Ze względu na sposób wysyłania
WindowInsetsw starszych wersjach interfejsu API (< API 30), który może uniemożliwiać udostępnianie wstawek widokom równorzędnym, musisz włączyć tę poprawkę za pomocąWindowInsetsApplier.install(viewPager2), jeśli chcesz stosować wstawki na urządzeniach z interfejsem API w wersji < 30.
Wersja 1.1.0-rc01
1 maja 2024 r.
androidx.viewpager2:viewpager2:1.1.0-rc01 nie zawiera żadnych istotnych zmian w porównaniu z wersją 1.1.0-beta02. Wersja 1.1.0-rc01 zawiera te zmiany.
Wersja 1.1.0-beta02
24 maja 2023 r.
Publikacja androidx.viewpager2:viewpager2:1.1.0-beta02 Wersja 1.1.0-beta02 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano wywołania zwrotne zapisywania stanu fragmentu do
FragmentTransactionCallback. (I45b90) ViewPager2nie próbuje już naprawiać uszkodzonego wysyłaniaWindowInsetsw przypadku starszych wersji interfejsu API (< 30), ponieważ sama poprawka może być szkodliwa dla innych elementówViewPager2. Poprawka jest nadal dostępna, ale stała się opcjonalna, dzięki czemu deweloperzy mogą podejmować decyzje w poszczególnych przypadkach. Aby włączyć poprawkę, zadzwoń pod numerWindowInsetsApplier.install(viewPager2)). (Ic9a85)
Poprawki błędów
- Rozwiązywanie 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.
Publikacja androidx.viewpager2:viewpager2:1.1.0-beta01 Wersja 1.1.0-beta01 zawiera te zmiany.
Zmiany w interfejsie API
Uaktualnienie androidx do Kotlin 1.4 (Id6471, b/165307851, b/165300826)
Przejście na kierowanie na Javę 8 w przypadku wszystkich bibliotek androidx (2923f39)
Poprawki błędów
- Poprawiono wysyłanie wstawek okien. Wszystkie strony otrzymują teraz te same wstawki. (I47fef)
Wersja 1.1.0-alpha01
1 kwietnia 2020 r.
Publikacja androidx.viewpager2:viewpager2:1.1.0-alpha01 Wersja 1.1.0-alpha01 zawiera te zmiany.
Ta wersja zawiera zmianę w RecyclerView 1.2.0-alpha02, która polega na wypełnianiu pól CollectionInfo i CollectionItemInfo, które RecyclerView nie udostępnia już domyślnie. Podczas aktualizacji do wersji RecyclerView 1.2.0-alpha02 zaktualizuj też ViewPager2, aby uniknąć regresji w zakresie ułatwień dostępu.
Nowe funkcje
- Dodaliśmy interfejs
FragmentTransactionCallbackdo nasłuchiwania zmian cyklu życia fragmentu, które zachodzą wFragmentStateAdapter. (Ibda77)
Poprawki błędów
- Rozwiązaliśmy problem
FragmentStateAdapterz początkową widocznością menu 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 udostępniana bez zmian w stosunku do wersji 1.0.0-rc01. Wersja 1.0.0 zawiera te zatwierdzenia.
Główne funkcje wersji 1.0.0
- Ulepszenia w stosunku do poprzedniej implementacji ViewPager:
- Obsługa układu RTL (od prawej do lewej)
- Obsługa orientacji pionowej
- Niezawodna obsługa
Fragment(w tym obsługa zmian w kolekcjiFragment) - Animacje zmian w zbiorze danych (w tym obsługa
DiffUtil)
- Łatwa migracja z poprzedniej implementacji
ViewPager(w miarę możliwości zachowanie zgodności interfejsu API). Zapoznaj się z przewodnikiem po migracji i przykładową aplikacją.
Zapoznaj się z przewodnikiem po używaniu ViewPager2 do przesuwania między fragmentami.
Wersja 1.0.0-rc01
23 października 2019 r.
androidx.viewpager2:viewpager2:1.0.0-rc01 została opublikowana 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.
Publikacja androidx.viewpager2:viewpager2:1.0.0-beta05 Wersja 1.0.0-beta05 zawiera te zmiany.
Poprawki błędów
- Poprawka dotycząca sytuacji, w której kliknięcie ikony
requestFocusna stronie poza ekranem powodowało zmianę strony. Działanie jest teraz zgodne z oryginalnym widokiem ViewPager. (b/140656866) - Poprawka dotycząca ikony
focuspozostającej na stronie poza ekranem po zmianie strony. Ostrość jest teraz usuwana podczas zmiany strony. (b/140656866) - Poprawka kolejności transakcji
Fragmentwstrzymania / wznowienia podczas zmiany strony (zawsze wstrzymujemy działanie starego głównego produktu przed wznowieniem działania nowego). (b/139489059) - Poprawka dla
canScrollHorizontally(int)icanScrollVertically(int)– teraz zwracają informację, czy ViewPager2 może przewijać w danym kierunku. (b/141848404) - Rozwiązaliśmy problem w SwipeRefreshLayout, aby lepiej współpracował z ViewPager2.
Wersja 1.0.0-beta04
5 września 2019 r.
Publikacja androidx.viewpager2:viewpager2:1.0.0-beta04 Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Poprawki błędów
- Rozwiązanie problemu z przypadkiem brzegowym
FragmentStateAdapterw przypadkuFragmentstosu wstecznego. (b/139095195) - Rozwiązaliśmy problem z elementem
EditText, który w przypadku określonych konfiguracji atrybutów powodował przewijanie lub przeskakiwanie strony podczas pisania lub ustawiania fokusu. (b/138044582, b/139432498) - Rozwiązaliśmy problem z instancjami
ItemDecorationi wprowadziliśmy obejście problemu z pozycjonowaniem wskaźnika przewijania. (b/139012032) - W innych komponentach naprawiono szereg problemów, aby lepiej współpracowały z
ViewPager2: RecyclerView, NestedScrollView i Navigation.
Wersja 1.0.0-beta03
7 sierpnia 2019 r.
Publikacja androidx.viewpager2:viewpager2:1.0.0-beta03 Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Poprawki błędów
- Rozwiązanie problemu
FragmentStateAdapterz przejściowym stanemFragment. b/134246546 - Rozwiązanie problemów z
currentItemiscrollState, które występowały, gdy zestaw danych był zmieniany podczas płynnego przewijania (rozwiązano przypadki brzegowe). b/137642608 - Poprawka dotycząca animacji
PageTransformer(w tymMarginPageTransformer), które powodowały konflikt z animacjami zmian zbioru danych. b/134658996 - Poprawka dotycząca animacji płynnego przewijania w przypadku dużych zbiorów danych (
floatlimit wartości całkowitych). b/134858960
Wersja 1.0.0-beta02
19 lipca 2019 r.
Publikacja androidx.viewpager2:viewpager2:1.0.0-beta02 Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Poprawki błędów
- Usunięto niezamierzoną zależność jacoco, która została wprowadzona w wersji
1.0.0-beta01. (b/137782951)
Wersja 1.0.0-beta01
17 lipca 2019 r.
Publikacja androidx.viewpager2:viewpager2:1.0.0-beta01 Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Poprawki błędów
- Poprawka błędu
ViewPager2.updateCurrentItempodczas przewijania i aktualizowania zbioru danych - Rozwiązanie problemu z awarią
NullPointerExceptionzwiązaną zViewPager2.isLayoutRtl TOUCH_SLOP_PAGINGjest teraz domyślnym progiem dotykuOnPageChangeCallbackzdarzeń poprawionych w przypadku pustych adapterów (strona0zamiast-1, aby zachować zgodność zViewPager1)
Znane problemy
- Przed przejściem do wersji stabilnej nadal pracujemy nad pozostałymi otwartymi problemami.
Wersja 1.0.0-alpha06
2 lipca 2019 r.
Publikacja androidx.viewpager2:viewpager2:1.0.0-alpha06 Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
To ostatnia planowana wersja alfa przed zamrożeniem interfejsu API i przejściem do wersji beta. Prześlij nam opinię o interfejsie API.
Nowe funkcje
- Podstawy ulepszonych ułatwień dostępu:
ACTION_PAGE_RIGHT,ACTION_PAGE_DOWNitp.
Zmiany w interfejsie API
FragmentStateAdapter: dodatkowe produktyFragmentsą ograniczone doSTARTED, a ichmenuVisibilityjest ustawione na false.PageTransformer,MarginPageTransformer,CompositePageTransformer: dokumentacja dotyczącapositionfixed.
Poprawki błędów
currentItempo naprawieniu zmiany zbioru danych / zmiany adaptera.MarginPageTransformerzoffscreenPageLimitproblemem został naprawiony.- Działania związane z ułatwieniami dostępu w przypadku
FakeDragzachowują się teraz prawidłowo.
Wersja 1.0.0-alpha05
5 czerwca 2019 r.
Publikacja androidx.viewpager2:viewpager2:1.0.0-alpha05 Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Nowe funkcje
ItemDecoratorwprowadzono z zachowaniem zgodnym zRecyclerView.MarginPageTransformerwprowadzono, aby umożliwić tworzenie odstępów między stronami (poza wcięciem strony).CompositePageTransformer, aby umożliwić łączenie wieluPageTransformer.
Zmiany w interfejsie API
- Metoda
FragmentStateAdapter#getItemzostała zmieniona naFragmentStateAdapter#createFragment– poprzednia nazwa metody była w przeszłości źródłem błędów. - Wartość
OFFSCREEN_PAGE_LIMIT_DEFAULTzmieniła się z0na-1. Jeśli używasz stałejOFFSCREEN_PAGE_LIMIT_DEFAULT, nie musisz zmieniać kodu klienta.
Poprawki błędów
- Poprawiliśmy działanie
getCurrentItem(), gdySCROLL_STATE_SETTLINGzostaje przerwane przez przeciągnięcie w przeciwnym kierunku. FragmentStateAdapterProblemy z ładowaniem klas rozwiązane w kontekście „Nie przechowuj aktywności”.- Ulepszono dokumentację
setOffscreenPageLimit.
Wersja 1.0.0-alpha04
7 maja 2019 r.
Publikacja androidx.viewpager2:viewpager2:1.0.0-alpha04 Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Nowe funkcje
offscreenPageLimit: umożliwia ścisłą kontrolę liczby stronView/Fragmentprzechowywanych w hierarchii widoków.
Zmiany w interfejsie API
- Atrybuty
orientationiisUserScrollablenie są już częściąSavedState - Metody
saveStateirestoreStatezostały ostatecznie wprowadzone wFragmentStateAdapter ViewPager2.OrientationiViewPager2.ScrollStateadnotacje zostały ustawione jako niepubliczne.
Poprawki błędów
SavedState: rozwiązano problem z przywracaniem, gdyActivityzostanie zniszczony lub ponownie utworzony.SavedState: opóźnione przywracanie do momentu ustawienia adapteraOnPageChangeCallback: naprawiono drobne przypadki brzegowe
Wersja 1.0.0-alpha03
3 kwietnia 2019 r.
Publikacja androidx.viewpager2:viewpager2:1.0.0-alpha03 Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Nowe funkcje
- Możliwość programowego przewijania ViewPager2:
fakeDragBy(offsetPx).
Zmiany w interfejsie API
FragmentStateAdapterwymaga teraz obiektuLifecycle. Dodano 2 konstruktory narzędziowe, aby uzyskać go z hostaFragmentActivitylub hostaFragment.
Poprawki błędów
- Liczne poprawki dotyczące obsługi
Fragment:- obsługiwanie aktualizacji zbioru danych w przypadku zminimalizowania aplikacji lub obrócenia ekranu;
- usuwanie nieistotnych fragmentów po obróceniu;
- usuwanie zapisanego stanu usuniętych elementów.
PageChangeCallback: poprawiono obliczanie przesunięcia strony w przypadku stron z marginesami;
Wersja 1.0.0-alpha02
13 marca 2019 r.
Publikacja androidx.viewpager2:viewpager2:1.0.0-alpha02 Pełną listę zmian zawartych w tej wersji znajdziesz tutaj.
Nowe funkcje
- Możliwość wyłączenia wprowadzania danych przez użytkownika (
setUserInputEnabled,isUserInputEnabled)
Zmiany w interfejsie API
- Klasa ViewPager2 final
Poprawki błędów
FragmentStateAdapterpoprawki stabilności,
Wersja 1.0.0-alpha01
7 lutego 2019 r.
Publikacja androidx.viewpager2:viewpager2 1.0.0-alpha01 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 (błędy VP1 zostały usunięte);
Zmiany w interfejsie API
FragmentStateAdapterzastępujeFragmentStatePagerAdapterRecyclerView.AdapterzastępujePagerAdapterregisterOnPageChangeCallbackzastępujeaddPageChangeListener
Znane problemy
- clipToPadding
- no fakeDrag
- JavaDoc
- zagnieżdżone przewijanie równoległe do orientacji,
- brak kontroli limitu poza ekranem,
- potrzebuje lepszej integracji z TabLayout,
- brak ustawienia szerokości strony (wymuszone 100%/100%)
- przekształcanie strony: brak wyboru warstwy sprzętowej lub programowej, brak odwróconej kolejności rysowania;
- zachowaj widoczność bieżącego elementu podczas wstawiania strony przed bieżącą
- nawigacja przy użyciu klawiatury wymaga dodatkowych działań
FragmentStateAdapterpoprawki stabilności i wydajności