ViewPager2
Najnowsza aktualizacja | Wersja stabilna | Kandydat do publikacji | Wersja Beta | Wersja alfa |
---|---|---|---|---|
14 maja 2024 r. | 1.1.0 | - | - | - |
Zależności AndroidX
Aby używać ViewPager2
, dodaj tę zależność AndroidX do pliku build.gradle
w Twoim projekcie:
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ć Jetpack. Daj nam znać, jeśli znajdziesz nowe wydania lub masz pomysły na ulepszenie tej biblioteki. Zanim utworzysz nową bibliotekę, przejrzyj problemy z tą biblioteką. Możesz oddać głos w ramach istniejącego problemu, 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.
Aplikacja androidx.viewpager2:viewpager2:1.1.0
została zwolniona. Wersja 1.1.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.0.0
- Naprawia awarie występujące w przypadku korzystania z widoku RecyclerView
1.3.1-rc01
lub nowszego. ViewPager2
teraz prawidłowo wypełnia polaCollectionInfo
iCollectionItemInfo
, które RecyclerView1.2.0-alpha02
i nowsze nie są już domyślnie wypełniane.- Dodano interfejs
FragmentTransactionCallback
do nasłuchiwania zmian cyklu życia fragmentu, które mają miejsce w elemencieFragmentStateAdapter
. - Rozwiązaliśmy problem
FragmentStateAdapter
z wstępną widocznością menu fragmentów podczas dodawania fragmentu do elementuFragmentManager
. - Naprawiono wysyłanie odstępów między oknami: wszystkie strony otrzymują teraz te same odstępy. Ze względu na sposób, w jaki w starych wersjach interfejsu API (< API 30) są wysyłane
WindowInsets
, które mogą uniemożliwiać wstawianie elementów w widokach równorzędnych, musisz włączyć tę poprawkę za pomocąWindowInsetsApplier.install(viewPager2)
, jeśli chcesz stosować wstawki na urządzeniach z interfejsem API 30.
Wersja 1.1.0-rc01
1 maja 2024 r.
Wersja androidx.viewpager2:viewpager2:1.1.0-rc01
została opublikowana bez istotnych zmian od wersji 1.1.0 do wersji beta02. Wersja 1.1.0-rc01 zawiera te zatwierdzenia.
Wersja 1.1.0-beta02
24 maja 2023 r.
Aplikacja androidx.viewpager2:viewpager2:1.1.0-beta02
została zwolniona. Wersja 1.1.0-beta02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Do interfejsu
FragmentTransactionCallback
dodano wywołania zwrotne z zapisywaniem stanu fragmentu kodu. (I45b90) ViewPager2
nie próbuje już naprawiać uszkodzonej funkcjiWindowInsets
w starszych wersjach interfejsu API (poniżej 30), ponieważ sama poprawka może być szkodliwa dla elementów równorzędnychViewPager2
. Poprawka jest nadal dostępna, ale została zaakceptowana, więc deweloperzy mogą podejmować decyzje indywidualnie. Włącz poprawkę, wywołującWindowInsetsApplier.install(viewPager2))
. (Ic9a85)
Poprawki błędów
- Rozwiąż problemy ze zgodnością w nowszych wersjach systemu
RecyclerView
. Użytkownicy tej wersji systemuViewPager2
powinni zaktualizować go do wersjiRecyclerView
lub nowszej (1.3.1-rc01).
Wersja 1.1.0-beta01
4 sierpnia 2021 r.
Aplikacja androidx.viewpager2:viewpager2:1.1.0-beta01
została zwolniona. Wersja 1.1.0-beta01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
Uaktualnij Androidax, aby używać Kotlin 1.4 (Id6471, b/165307851, b/165300826)
Przejdź na kierowanie na Javę 8 w przypadku wszystkich bibliotek Androida (2923f39)
Poprawki błędów
- Rozwiązano problem z wysyłaniem wstawionych okien. Wszystkie strony mają teraz te same ustawienia. (I47fef)
Wersja 1.1.0-alfa01
1 kwietnia 2020 r.
Aplikacja androidx.viewpager2:viewpager2:1.1.0-alpha01
została zwolniona. Wersja 1.1.0-alpha01 zawiera te zatwierdzenia.
Ta wersja wiąże się ze zmianą obiektu RecyclerView w wersji 1.2.0-alpha02 przez wypełnienie pól CollectionInfo
i CollectionItemInfo
, które RecyclerView
nie są już domyślnie udostępniane. Podczas aktualizacji do wersji RecyclerView 1.2.0-alpha02
zaktualizuj też ViewPager2
, aby zapobiec ponownemu pogorszeniu ułatwień dostępu.
Nowe funkcje
- Dodano interfejs
FragmentTransactionCallback
do nasłuchiwania zmian cyklu życia fragmentu, które mają miejsce w elemencieFragmentStateAdapter
. (Ibda77)
Poprawki błędów
- Rozwiązaliśmy problem
FragmentStateAdapter
z wstępną widocznością menu fragmentów podczas dodawania fragmentu do elementuFragmentManager
. (I9d2ff, b/144442240)
Wersja 1.0.0
Wersja 1.0.0
20 listopada 2019 r.
Wersja androidx.viewpager2:viewpager2:1.0.0
została udostępniona bez zmian z wersji 1.0.0-rc01. Wersja 1.0.0 zawiera te zatwierdzenia.
Główne funkcje wersji 1.0.0
- Ulepszenia poprzedniej implementacji obiektu ViewPager:
- Obsługa układu od prawej do lewej
- Obsługa orientacji pionowej
- Niezawodna obsługa
Fragment
(w tym wprowadzanie zmian w bazowej kolekcjiFragment
) - Animacje zmiany zbioru danych (w tym obsługa
DiffUtil
)
- Łatwa migracja z poprzedniej implementacji
ViewPager
(w miarę możliwości spójność interfejsu API). Zobacz przewodnik po migracji i przykładową aplikację.
Zobacz przewodnik na temat przesuwania się między fragmentami przy użyciu ViewPager2.
Wersja 1.0.0-rc01
23 października 2019 r.
Wersja androidx.viewpager2:viewpager2:1.0.0-rc01
została udostępniona 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.
Aplikacja androidx.viewpager2:viewpager2:1.0.0-beta05
została zwolniona. Wersja 1.0.0-beta05 zawiera te zatwierdzenia.
Poprawki błędów
- Napraw błąd
requestFocus
strony poza ekranem, który powoduje zmianę strony. Działanie jest teraz spójne z działaniem oryginalnego elementu ViewPager. (b/140656866) - Naprawiono błąd
focus
, który po zmianie strony pozostała na stronie poza ekranem. Podczas zmiany strony zaznaczenie jest teraz wyczyszczone. (b/140656866) - Rozwiązano problem z zamawianiem
Fragment
wstrzymywania / wznawiania transakcji podczas zmiany strony (obecnie zawsze wstrzymujemy stary element podstawowy przed wznowieniem nowego). (b/139489059) - Poprawiono błędy
canScrollHorizontally(int)
icanScrollVertically(int)
– zwracają teraz, czy ViewPager2 może przewijać w określonym kierunku. (b/141848404) - Rozwiązaliśmy problem z funkcją SwipeOdświeżUkład, by działał lepiej z ViewPager2.
Wersja 1.0.0-beta04
5 września 2019 r.
Aplikacja androidx.viewpager2:viewpager2:1.0.0-beta04
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Poprawki błędów
- Naprawiono problem
FragmentStateAdapter
dotyczący wielkości liter w stosie wstecznymFragment
. (b/139095195) - Naprawiono błąd związany z elementem
EditText
. Niektóre konfiguracje atrybutów powodowały przewinięcie strony lub przewinięcie strony podczas wpisywania lub zaznaczania. (b/138044582, b/139432498) - Naprawiono problem z instancjami
ItemDecoration
i obejście pozycjonowania wskaźnika dalekiego przewijania. (b/139012032) - Naprawiliśmy kilka błędów w innych komponentach, które ułatwiają korzystanie z
ViewPager2
: RecyclerView, Nested ScrollView i Nawigacja.
Wersja 1.0.0-beta03
7 sierpnia 2019 r.
Aplikacja androidx.viewpager2:viewpager2:1.0.0-beta03
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Poprawki błędów
- Poprawiono problem
FragmentStateAdapter
z przejściowym stanemFragment
. b/134246546 - Naprawiono problemy z
currentItem
iscrollState
występujące, gdy zbiór danych zmienia się podczas płynnego przewijania (rozwiązania przystosowane do zagrożeń). b/137642608 - Poprawiono animacje
PageTransformer
(w tymMarginPageTransformer
) powodujące konflikt z animacjami zmiany zbioru danych. b/134658996 - Poprawiono animacje płynnego przewijania w dużych zbiorach danych (limit wartości całkowitej:
float
). b/134858960
Wersja 1.0.0-beta02
19 lipca 2019 r.
Aplikacja androidx.viewpager2:viewpager2:1.0.0-beta02
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Poprawki błędów
- Usunięto niezamierzoną zależność w stylu Jacoco, która została wprowadzona w
1.0.0-beta01
. (b/137782951)
Wersja 1.0.0-beta01
17 lipca 2019 r.
Aplikacja androidx.viewpager2:viewpager2:1.0.0-beta01
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Poprawki błędów
- Naprawiono awarię
ViewPager2.updateCurrentItem
podczas przewijania i aktualizowania zbioru danych - Usunięto
NullPointerException
awarię związaną z samochodemViewPager2.isLayoutRtl
TOUCH_SLOP_PAGING
jest teraz domyślną funkcją dotyku- Naprawiono zdarzenia
OnPageChangeCallback
w przypadku pustych adapterów (strona0
zamiast-1
w celu zachowania spójności zViewPager1
)
Znane problemy
- Nadal pracujemy nad pozostałymi otwartymi problemami przed przejściem na wersję stabilną.
Wersja 1.0.0-alfa06
2 lipca 2019 r.
Aplikacja androidx.viewpager2:viewpager2:1.0.0-alpha06
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
To ostatnia wersja alfa planowana przed zablokowaniem interfejsu API i przejściem na jego wersję beta. Podziel się z nami opinią o interfejsie API.
Nowe funkcje
- Podstawy ułatwienia dostępu:
ACTION_PAGE_RIGHT
,ACTION_PAGE_DOWN
itp.
Zmiany w interfejsie API
FragmentStateAdapter
: elementyFragment
inne niż główny mają limitSTARTED
, a ich parametrmenuVisibility
ma wartość false (fałsz).PageTransformer
,MarginPageTransformer
,CompositePageTransformer
: dokumentacja dotyczącaposition
poprawiono.
Poprawki błędów
currentItem
po zmianie zbioru danych / zmianie adaptera.- Naprawiono błąd
MarginPageTransformer
zoffscreenPageLimit
problemem. - Działanie ułatwień dostępu w systemie
FakeDrag
zostało naprawione.
Wersja 1.0.0-alfa05
5 czerwca 2019 r.
Aplikacja androidx.viewpager2:viewpager2:1.0.0-alpha05
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Nowe funkcje
- Wprowadzono element
ItemDecorator
zgodnie z zasadamiRecyclerView
. - Wprowadzenie funkcji
MarginPageTransformer
, która umożliwia tworzenie odstępu między stronami (poza wbudowaniem strony). - Wprowadzono funkcję
CompositePageTransformer
, która umożliwia łączenie różnych elementówPageTransformer
.
Zmiany w interfejsie API
- Nazwa metody
FragmentStateAdapter#getItem
została zmieniona naFragmentStateAdapter#createFragment
– poprzednia nazwa metody była w przeszłości źródłem błędów. - Zmieniono wartość
OFFSCREEN_PAGE_LIMIT_DEFAULT
z0
na-1
. Nie trzeba zmieniać kodu klienta, jeśli używana jest stałaOFFSCREEN_PAGE_LIMIT_DEFAULT
stała.
Poprawki błędów
- Działanie
getCurrentItem()
zostało skorygowane, gdy przeciągnięcie w przeciwnym kierunku zakłóciło działanie urządzeniaSCROLL_STATE_SETTLING
. FragmentStateAdapter
problemów z modułami ładowania klas rozpatrzonych w kontekście „Nie zachowuj działań”.- Dokumentacja usługi
setOffscreenPageLimit
została ulepszona.
Wersja 1.0.0-alfa04
7 maja 2019 r.
Aplikacja androidx.viewpager2:viewpager2:1.0.0-alpha04
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Nowe funkcje
offscreenPageLimit
: umożliwia dokładną kontrolę nad liczbą stron (View
/Fragment
) przechowywanych w hierarchii widoków.
Zmiany w interfejsie API
- Atrybuty
orientation
iisUserScrollable
nie są już częściąSavedState
- Metody
saveState
irestoreState
zostały ukończone wFragmentStateAdapter
- Adnotacje
ViewPager2.Orientation
iViewPager2.ScrollState
zostały ustawione jako niepubliczne
Poprawki błędów
SavedState
: usunięto problem z przywracaniem, gdyActivity
został zniszczony lub odtworzonySavedState
: opóźnione przywracanie do momentu skonfigurowania adapteraOnPageChangeCallback
: naprawiono drobne skrajne przypadki
Wersja 1.0.0-alfa03
3 kwietnia 2019 r.
Aplikacja androidx.viewpager2:viewpager2:1.0.0-alpha03
została zwolniona. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.
Nowe funkcje
- Możliwość programowego przewijania ViewPager2:
fakeDragBy(offsetPx)
.
Zmiany w interfejsie API
FragmentStateAdapter
wymaga teraz obiektuLifecycle
. Dodano 2 konstrukcje użytkowe w celu uzyskania ich z hostaFragmentActivity
lubFragment
.
Poprawki błędów
- Wprowadzono wiele poprawek dotyczących obsługi klienta
Fragment
:- obsługę aktualizacji zbioru danych przy zminimalizowaniu lub podczas rotacji ekranu;
- usunięcie po rotacji nieistotnych fragmentów;
- usunięcie zapisanego stanu usuniętych elementów.
PageChangeCallback
: stałe obliczanie przesunięcia strony w przypadku stron z marginesami.
Wersja 1.0.0-alfa02
13 marca 2019 r.
Aplikacja 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
- Finał zajęć ViewPager2
Poprawki błędów
FragmentStateAdapter
poprawki stabilności
Wersja 1.0.0-alfa01
7 lutego 2019 r.
Aplikacja androidx.viewpager2:viewpager2 1.0.0-alpha01
została zwolniona. To jest pierwsza wersja ViewPager2.
Nowe funkcje
- W porównaniu do jego poprzednika
android.support.v4.view.ViewPager
(VP1):- Obsługa układu od prawej do lewej (RTL)
- Obsługa orientacji pionowej
- W pełni funkcjonalne (
notifyDataSetChanged
) – rozwiązano błędy wersji VP1
Zmiany w interfejsie API
FragmentStateAdapter
zastępujeFragmentStatePagerAdapter
RecyclerView.Adapter
zastępujePagerAdapter
registerOnPageChangeCallback
zastępujeaddPageChangeListener
Znane problemy
- clipToPadding
- nie fakeDrag
- dokument Java
- zagnieżdżone przewijanie równoległe do orientacji
- brak limitu elementów poza ekranem
- wymaga lepszej integracji układu kart
- brak metody ustawiania parametru pageWidth (wymuszane 100%/100%)
- transformer strony: brak możliwości wyboru warstwy sprzętowej/oprogramowej; brak odwrotnej kolejności rysowania
- utrzymuj bieżący element widoczny podczas wstawiania strony przed bieżącym
- nawigacja za pomocą klawiatury wymaga działania
- Wkrótce pojawią się ulepszenia stabilności / wydajności aplikacji
FragmentStateAdapter