ViewPager2
| Последнее обновление | Стабильный релиз | Предварительная версия релиза | Бета-версия | Альфа-версия |
|---|---|---|---|---|
| 14 мая 2024 г. | 1.1.0 | - | - | - |
Зависимости AndroidX
Для использования ViewPager2 добавьте следующую зависимость AndroidX в файл build.gradle вашего проекта:
классный
dependencies { implementation "androidx.viewpager2:viewpager2:1.1.0" }
Котлин
dependencies { implementation("androidx.viewpager2:viewpager2:1.1.0") }
Обратная связь
Ваши отзывы помогают улучшить Jetpack. Сообщите нам, если вы обнаружите новые проблемы или у вас есть идеи по улучшению этой библиотеки. Пожалуйста, ознакомьтесь с существующими проблемами в этой библиотеке, прежде чем создавать новую. Вы можете проголосовать за существующую проблему, нажав кнопку со звездочкой.
Для получения более подробной информации см. документацию по системе отслеживания ошибок .
Версия 1.1.0
Версия 1.1.0
14 мая 2024 г.
Выпущена версия androidx.viewpager2:viewpager2:1.1.0 . Версия 1.1.0 содержит следующие коммиты .
Важные изменения с версии 1.0.0
- Исправлены ошибки, приводившие к сбоям при использовании с RecyclerView
1.3.1-rc01или более поздними версиями. - Теперь
ViewPager2корректно заполняет поляCollectionInfoиCollectionItemInfo, которые RecyclerView1.2.0-alpha02и более поздние версии больше не заполняют по умолчанию. - Добавлен интерфейс
FragmentTransactionCallbackдля отслеживания изменений жизненного цикла фрагмента, происходящих внутриFragmentStateAdapter. - Исправлена проблема
FragmentStateAdapter, связанная с начальной видимостью меню фрагмента при добавлении фрагмента вFragmentManager. - Fixed dispatch of window insets: all pages now get the same insets. Due to how
WindowInsetsare dispatched on old API versions (< API 30) that can prevent insets from being available to sibling views, you must opt into this fix viaWindowInsetsApplier.install(viewPager2)if you want to apply insets on < API 30 devices.
Версия 1.1.0-rc01
1 мая 2024 г.
Выпущена версия androidx.viewpager2:viewpager2:1.1.0-rc01 без существенных изменений по сравнению с версией 1.1.0-beta02. Версия 1.1.0-rc01 содержит следующие коммиты .
Версия 1.1.0-beta02
24 мая 2023 г.
Выпущена версия androidx.viewpager2:viewpager2:1.1.0-beta02 . Версия 1.1.0-beta02 содержит следующие коммиты.
Изменения в API
- Добавлены коллбэки для сохранения состояния фрагмента в
FragmentTransactionCallback. ( I45b90 ) -
ViewPager2now no longer tries to fix the brokenWindowInsetsdispatch of old API versions (< 30), because the fix itself can be harmful to siblings ofViewPager2. The fix is still available, but has become an opt-in so developers can decide on a case by case basis. Enable the fix by callingWindowInsetsApplier.install(viewPager2)). ( Ic9a85 )
Исправлены ошибки
- Исправлены проблемы совместимости с более новыми версиями
RecyclerView. Пользователям этой версииViewPager2следует обновиться как минимум доRecyclerView1.3.1-rc01.
Версия 1.1.0-beta01
4 августа 2021 г.
Выпущена версия androidx.viewpager2:viewpager2:1.1.0-beta01 . Версия 1.1.0-beta01 содержит следующие коммиты.
Изменения в API
Обновите androidx для использования Kotlin 1.4 ( Id6471 , b/165307851 , b/165300826 )
Переход на использование Java 8 для всех библиотек androidx ( 2923f39 )
Исправлены ошибки
- Исправлена ошибка в отображении отступов окон, теперь все страницы получают одинаковые отступы. ( I47fef )
Версия 1.1.0-alpha01
1 апреля 2020 г.
Выпущена версия androidx.viewpager2:viewpager2:1.1.0-alpha01 . Версия 1.1.0-alpha01 содержит следующие коммиты.
This release accompanies a change in RecyclerView 1.2.0-alpha02 by populating CollectionInfo and CollectionItemInfo that RecyclerView no longer provides by default. When updating to RecyclerView 1.2.0-alpha02 also update ViewPager2 to prevent Accessibility regressions.
Новые функции
- Добавлен интерфейс
FragmentTransactionCallbackдля отслеживания изменений жизненного цикла фрагмента, происходящих внутриFragmentStateAdapter. ( Ibda77 )
Исправлены ошибки
- Исправлена проблема
FragmentStateAdapter, связанная с начальной видимостью меню фрагмента при добавлении фрагмента вFragmentManager. ( I9d2ff , b/144442240 )
Версия 1.0.0
Версия 1.0.0
20 ноября 2019 г.
Выпущена версия androidx.viewpager2:viewpager2:1.0.0 без изменений по сравнению с версией 1.0.0-rc01. Версия 1.0.0 содержит следующие коммиты .
Основные особенности версии 1.0.0
- Улучшения по сравнению с предыдущей реализацией ViewPager :
- Поддержка компоновки RTL (справа налево).
- Поддержка вертикальной ориентации
- Надежная поддержка
Fragment(включая обработку изменений в базовой коллекцииFragment). - Анимация изменений в наборе данных (включая поддержку
DiffUtil)
- Простая миграция с предыдущей реализации
ViewPager(по возможности, с сохранением API-совместимости). См. руководство по миграции и пример приложения .
См. руководство по использованию ViewPager2 для переключения между фрагментами.
Версия 1.0.0-rc01
23 октября 2019 г.
Выпущена версия androidx.viewpager2:viewpager2:1.0.0-rc01 без изменений по сравнению с 1.0.0-beta05 . Версия 1.0.0-rc01 содержит следующие коммиты .
Версия 1.0.0-beta05
9 октября 2019 г.
Выпущена версия androidx.viewpager2:viewpager2:1.0.0-beta05 . Версия 1.0.0-beta05 содержит следующие коммиты .
Исправлены ошибки
- Исправлена ошибка, из-за которой
requestFocusна странице, находящейся за пределами экрана, вызывал смену страницы. Теперь поведение соответствует исходному ViewPager. ( b/140656866 ) - Исправлена ошибка, из-за которой
focusоставался на странице за пределами экрана после смены страницы. Теперь фокус сбрасывается при смене страницы. ( b/140656866 ) - Исправлена ошибка в порядке приостановки/возобновления транзакций
Fragmentпри смене страницы (теперь мы всегда приостанавливаем старый основной элемент перед возобновлением нового). ( b/139489059 ) - Исправлена ошибка в функциях
canScrollHorizontally(int)иcanScrollVertically(int)— теперь они возвращают значение, указывающее, может ли ViewPager2 прокручиваться в заданном направлении. ( b/141848404 ) - В SwipeRefreshLayout исправлена ошибка, позволяющая улучшить его работу с ViewPager2.
Версия 1.0.0-beta04
5 сентября 2019 г.
Выпущена версия androidx.viewpager2:viewpager2:1.0.0-beta04 . Список изменений, включенных в эту версию, можно найти здесь .
Исправлены ошибки
- Исправлена ошибка, связанная с граничным случаем
FragmentStateAdapterи стеком возвратаFragment. ( b/139095195 ) - Исправлена ошибка в
EditText, из-за которой определенные настройки атрибутов вызывали скачок прокрутки/страницы при наборе текста/нажатии фокуса. ( b/138044582 , b/139432498 ) - Исправлена ошибка с экземплярами
ItemDecoration, а также найдено обходное решение для позиционирования индикатора перепрокрутки. ( b/139012032 ) - Для улучшения работы с
ViewPager2был исправлен ряд проблем в других компонентах: RecyclerView , NestedScrollView и Navigation .
Версия 1.0.0-beta03
7 августа 2019 г.
Выпущена версия androidx.viewpager2:viewpager2:1.0.0-beta03 . Список изменений, включенных в эту версию, можно найти здесь .
Исправлены ошибки
- Исправлена ошибка
FragmentStateAdapter, связанная с временным состояниемFragment. b/134246546 - Исправлены ошибки в
currentItemиscrollState, возникающие при изменении набора данных во время плавной прокрутки (устранены граничные случаи). b/137642608 - Исправлена ошибка, из-за которой анимации
PageTransformer(включаяMarginPageTransformer) конфликтовали с анимациями изменения набора данных. b/134658996 - Исправлена ошибка, из-за которой анимация плавной прокрутки отображалась в больших наборах данных (ограничение на значения целых чисел
floatзапятой). b/134858960
Версия 1.0.0-beta02
19 июля 2019 г.
Выпущена версия androidx.viewpager2:viewpager2:1.0.0-beta02 . Список изменений, включенных в эту версию, можно найти здесь .
Исправлены ошибки
- Удалена непреднамеренная зависимость от jacoco, появившаяся в
1.0.0-beta01. ( b/137782951 )
Версия 1.0.0-beta01
17 июля 2019 г.
Выпущена версия androidx.viewpager2:viewpager2:1.0.0-beta01 . Список изменений, включенных в эту версию, можно найти здесь .
Исправлены ошибки
- Исправлена ошибка, приводившая к сбою функции
ViewPager2.updateCurrentItemпри прокрутке и обновлении набора данных. - Исправлена ошибка
NullPointerException, приводящая к сбою, связанному сViewPager2.isLayoutRtl -
TOUCH_SLOP_PAGINGтеперь является значением наклона сенсорного экрана по умолчанию. - Исправлены события
OnPageChangeCallbackдля пустых адаптеров (страница0вместо-1для обеспечения совместимости сViewPager1).
Известные проблемы
- Мы продолжаем работу над оставшимися открытыми вопросами, прежде чем перейти к стабильному состоянию.
Версия 1.0.0-alpha06
2 июля 2019 г.
Выпущена версия androidx.viewpager2:viewpager2:1.0.0-alpha06 . Список изменений, включенных в эту версию, можно найти здесь .
Это наша последняя запланированная альфа-версия перед тем, как заморозить API и перейти к бета-версии — пожалуйста, оставляйте отзывы об API.
Новые функции
- Основы для повышения доступности:
ACTION_PAGE_RIGHT,ACTION_PAGE_DOWNи т. д.
изменения API
-
FragmentStateAdapter:Fragment, не являющиеся основными элементами, ограничены значениемSTARTED, а ихmenuVisibilityустановлено в false. -
PageTransformer,MarginPageTransformer,CompositePageTransformer: документация поpositionfixed.
Исправлены ошибки
- После изменения набора данных / изменения адаптера
currentItemисправлено. - Исправлена проблема с параметром
MarginPageTransformer, связанная сoffscreenPageLimit. - Исправлена ошибка, возникающая при использовании функции
FakeDragдля выполнения действий, связанных с доступом к специальным возможностям.
Версия 1.0.0-alpha05
5 июня 2019 г.
Выпущена версия androidx.viewpager2:viewpager2:1.0.0-alpha05 . Список изменений, включенных в эту версию, можно найти здесь .
Новые функции
- Представлен
ItemDecoratorс поведением, аналогичнымRecyclerView. -
MarginPageTransformerбыла введена для обеспечения возможности создания пространства между страницами (за пределами отступа страницы). -
CompositePageTransformerбыла введена для обеспечения возможности объединения нескольких функцийPageTransformer.
изменения API
- Метод
FragmentStateAdapter#getItemпереименован вFragmentStateAdapter#createFragment— предыдущее название метода в прошлом являлось источником ошибок. - Значение
OFFSCREEN_PAGE_LIMIT_DEFAULTизменено с0на-1. Нет необходимости вносить изменения в клиентский код, если используется константаOFFSCREEN_PAGE_LIMIT_DEFAULT.
Исправлены ошибки
- Исправлено поведение функции
getCurrentItem()в случае прерыванияSCROLL_STATE_SETTLINGперетаскиванием в противоположном направлении. - Проблемы загрузчика классов
FragmentStateAdapterрешены в контексте "Не сохранять активности". - Документация
setOffscreenPageLimitулучшена.
Версия 1.0.0-alpha04
7 мая 2019 г.
Выпущена версия androidx.viewpager2:viewpager2:1.0.0-alpha04 . Список изменений, включенных в эту версию, можно найти здесь .
Новые функции
-
offscreenPageLimit: позволяет жестко контролировать количествоView/Fragmentстраниц, хранящихся в иерархии представлений.
изменения API
- Атрибуты
orientationиisUserScrollableбольше не являются частьюSavedState - Методы
saveStateиrestoreStateвFragmentStateAdapterстали финальными. - Аннотации
ViewPager2.OrientationиViewPager2.ScrollStateсделаны непубличными.
Исправлены ошибки
-
SavedState: исправлена ошибка восстановления при уничтожении/повторном созданииActivity. -
SavedState: отложенное восстановление до тех пор, пока не будет установлен адаптер. -
OnPageChangeCallback: исправлены незначительные ошибки.
Версия 1.0.0-alpha03
3 апреля 2019 г.
Выпущена версия androidx.viewpager2:viewpager2:1.0.0-alpha03 . Список изменений, включенных в эту версию, можно найти здесь .
Новые функции
- Возможность программной прокрутки ViewPager2:
fakeDragBy(offsetPx).
изменения API
- Теперь
FragmentStateAdapterтребуется объектLifecycle. Добавлены два вспомогательных конструктора для его получения из хост-объектаFragmentActivityили хост-Fragment.
Исправлены ошибки
- Многочисленные исправления в поддержке
Fragment:- Обработка обновлений набора данных в свернутом режиме или во время поворота экрана;
- удаление ненужных фрагментов после поворота;
- Удаление сохраненного состояния удаленных элементов.
-
PageChangeCallback: фиксированный расчет смещения страницы для страниц с полями.
Версия 1.0.0-alpha02
13 марта 2019 г.
Выпущена версия androidx.viewpager2:viewpager2:1.0.0-alpha02 . Полный список изменений, включенных в эту версию, можно найти здесь .
Новые функции
- Возможность отключить ввод данных пользователем (
setUserInputEnabled,isUserInputEnabled)
изменения API
- Финальный класс ViewPager2
Исправлены ошибки
- Исправления стабильности
FragmentStateAdapter
Версия 1.0.0-alpha01
7 февраля 2019 г.
Выпущена версия androidx.viewpager2:viewpager2 1.0.0-alpha01 . Это первый релиз ViewPager2.
Новые функции
- По сравнению со своим предшественником
android.support.v4.view.ViewPager(VP1):- Поддержка компоновки справа налево (RTL).
- Поддержка вертикальной ориентации
-
notifyDataSetChangedполностью функциональна (исправлены ошибки VP1).
изменения API
-
FragmentStateAdapterзаменяетFragmentStatePagerAdapter -
RecyclerView.AdapterзаменяетPagerAdapter -
registerOnPageChangeCallbackзаменяетaddPageChangeListener
Известные проблемы
- clipToPadding
- no fakeDrag
- JavaDoc
- вложенная прокрутка параллельно ориентации
- без контроля ограничений за пределами экрана
- Необходима более эффективная интеграция с TabLayout.
- Нет параметра pageWidth (принудительное значение 100%/100%)
- Трансформатор страниц: нет выбора аппаратного/программного слоя; нет обратного порядка отрисовки.
- сохранять текущий элемент видимым при вставке страницы перед текущей
- Необходимо доработать навигацию с помощью клавиатуры.
- В ближайшее время будут внесены улучшения в стабильность и производительность
FragmentStateAdapter