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:
Groovy
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-rc01
lub nowszego. ViewPager2
teraz prawidłowo wypełnia polaCollectionInfo
iCollectionItemInfo
, które w komponencie RecyclerView1.2.0-alpha02
i wyższym nie są już domyślnie wypełniane.- Dodano interfejs
FragmentTransactionCallback
do nasłuchiwania zmian cyklu życia fragmentu, które występują w ramachFragmentStateAdapter
. - Rozwiązaliśmy problem
FragmentStateAdapter
z 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
WindowInsets
w 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
FragmentTransactionCallback
wywołania obsługi zapisywania stanu fragmentu. (I45b90) ViewPager2
nie próbuje już naprawiać uszkodzonego rozsyłaniaWindowInsets
w 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 wersjiViewPager2
powinni zaktualizować ją co najmniej do wersjiRecyclerView
1.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
FragmentTransactionCallback
do nasłuchiwania zmian cyklu życia fragmentu, które występują w ramachFragmentStateAdapter
. (Ibda77)
Poprawki błędów
- Rozwiązaliśmy problem
FragmentStateAdapter
z 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
requestFocus
na 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
Fragment
podczas 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
FragmentStateAdapter
z rzadko występującym błędem w komponencieFragment
. (b/139095195) - Rozwiązanie problemu z
EditText
w 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
ItemDecoration
oraz 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
FragmentStateAdapter
ze stanemFragment
przejściowym. b/134246546 - Rozwiązanie problemów
currentItem
iscrollState
, 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 (
float
limit 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.updateCurrentItem
podczas przewijania i aktualizowania zbioru danych - Rozwiązanie problemu z awarią
NullPointerException
związanego zViewPager2.isLayoutRtl
TOUCH_SLOP_PAGING
jest teraz domyślną wartością slop- Naprawiono zdarzenia
OnPageChangeCallback
w przypadku pustych adapterów (strona0
zamiast-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_DOWN
itd.
Zmiany w interfejsie API
FragmentStateAdapter
: liczba elementów innych niż głównychFragment
jest ograniczona doSTARTED
, a ichmenuVisibility
ma wartość false.PageTransformer
,MarginPageTransformer
,CompositePageTransformer
: dokumentacja dlaposition
naprawiona.
Poprawki błędów
currentItem
po zmianie zestawu danych / adaptera.MarginPageTransformer
zoffscreenPageLimit
problemem 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
ItemDecorator
wprowadzony z zachowaniem zachowania zgodnego zRecyclerView
.MarginPageTransformer
wprowadzono, 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#getItem
została przemianowana naFragmentStateAdapter#createFragment
– poprzednia nazwa metody w przeszłości powodowała błędy. - Zmieniono wartość parametru
OFFSCREEN_PAGE_LIMIT_DEFAULT
z0
na-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_SETTLING
zostanie przerwane przez przeciąganie w przeciwnym kierunku. FragmentStateAdapter
Problemy 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
/Fragment
przechowywanych w hierarchii widoku.
Zmiany w interfejsie API
- Atrybuty
orientation
iisUserScrollable
nie są już częściąSavedState
- Metody
saveState
irestoreState
zostały uznane za ostateczne wFragmentStateAdapter
- adnotacje
ViewPager2.Orientation
iViewPager2.ScrollState
zostały oznaczone jako prywatne.
Poprawki błędów.
SavedState
: usunięto problem z przywracaniem po zniszczeniu / odtworzeniu zasobuActivity
SavedState
: 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
FragmentStateAdapter
wymaga teraz obiektuLifecycle
. Dodano 2 konstruktory pomocnicze do uzyskiwania wartości z hostaFragmentActivity
lub 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.
FragmentStateAdapter
poprawki 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
notifyDataSetChanged
w pełni funkcjonalna (usterki VP1 zostały naprawione);
Zmiany w interfejsie API
FragmentStateAdapter
zastępujeFragmentStatePagerAdapter
RecyclerView.Adapter
zastępujePagerAdapter
registerOnPageChangeCallback
zastę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
FragmentStateAdapter
poprawę stabilności lub wydajności