ПросмотрПейджер2

Отображение представлений или фрагментов в пролистываемом формате.
Последнее обновление Стабильный выпуск Кандидат на выпуск Бета-версия Альфа-релиз
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 , которые RecyclerView 1.2.0-alpha02 и выше больше не заполняются по умолчанию.
  • Добавлен интерфейс FragmentTransactionCallback для прослушивания изменений жизненного цикла фрагмента, которые происходят внутри FragmentStateAdapter .
  • Исправлена ​​проблема FragmentStateAdapter с начальной видимостью меню фрагмента при добавлении фрагмента в FragmentManager .
  • Исправлена ​​отправка вставок окон: все страницы теперь имеют одинаковые вставки. Из-за того, что WindowInsets отправляются в старых версиях API (< API 30), которые могут препятствовать доступности вставок для одноуровневых представлений, вы должны согласиться на это исправление через WindowInsetsApplier.install(viewPager2) , если вы хотите применять вставки на устройствах < API 30. .

Версия 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 )
  • ViewPager2 теперь больше не пытается исправить некорректную отправку WindowInsets старых версий API (< 30), поскольку само исправление может быть вредным для братьев и сестер ViewPager2 . Исправление все еще доступно, но оно стало добровольным, поэтому разработчики могут принимать решение в каждом конкретном случае. Включите исправление, вызвав WindowInsetsApplier.install(viewPager2)) . ( Ic9a85 )

Исправления ошибок

  • Устраните проблемы совместимости с более новыми версиями RecyclerView . Пользователям этой версии ViewPager2 следует обновиться как минимум до RecyclerView 1.3.1-rc01.

Версия 1.1.0-бета01

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-альфа01

1 апреля 2020 г.

Выпущен androidx.viewpager2:viewpager2:1.1.0-alpha01 . Версия 1.1.0-alpha01 содержит эти коммиты.

Этот выпуск сопровождает изменение в RecyclerView 1.2.0-alpha02 путем заполнения CollectionInfo и CollectionItemInfo , которые RecyclerView больше не предоставляет по умолчанию. При обновлении до RecyclerView 1.2.0-alpha02 также обновите ViewPager2 чтобы предотвратить ухудшение доступности.

Новые возможности

  • Добавлен интерфейс FragmentTransactionCallback для прослушивания изменений жизненного цикла фрагмента, которые происходят внутри FragmentStateAdapter . ( Ибда77 )

Исправления ошибок

  • Исправлена ​​проблема FragmentStateAdapter с начальной видимостью меню фрагмента при добавлении фрагмента в FragmentManager . ( I9d2ff , б/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-бета05

9 октября 2019 г.

Выпущен androidx.viewpager2:viewpager2:1.0.0-beta05 . Версия 1.0.0-beta05 содержит эти коммиты .

Исправления ошибок

  • Исправлен запрос requestFocus на странице за пределами экрана, вызывающий изменение страницы. Поведение теперь соответствует исходному ViewPager. ( б / 140656866 )
  • Исправлена ​​ошибка, из-за которой focus оставался на странице за кадром после смены страницы. Фокус теперь очищается при смене страницы. ( б / 140656866 )
  • Исправлен порядок транзакций паузы/возобновления Fragment при смене страницы (теперь мы всегда приостанавливаем старый основной элемент перед возобновлением нового). ( б / 139489059 )
  • Исправление для canScrollHorizontally(int) и canScrollVertically(int) — теперь они возвращают, может ли ViewPager2 прокручиваться в заданном направлении. ( б / 141848404 )
  • Исправлена ​​проблема в SwipeRefreshLayout для лучшей работы с ViewPager2.

Версия 1.0.0-beta04

5 сентября 2019 г.

Выпущен androidx.viewpager2:viewpager2:1.0.0-beta04 . Коммиты, включенные в эту версию, можно найти здесь .

Исправления ошибок

  • Исправлена ​​проблема с крайним регистром FragmentStateAdapter с обратным стеком Fragment . ( б / 139095195 )
  • Исправлена ​​ошибка EditText с определенными конфигурациями атрибутов, приводившая к прокрутке/переходу страницы при вводе/фокусе. ( б / 138044582 , б / 139432498 )
  • Исправлена ​​проблема с экземплярами ItemDecoration и обходной путь для позиционирования индикатора чрезмерной прокрутки. ( б / 139012032 )
  • Ряд проблем был исправлен в других компонентах для лучшей работы с ViewPager2 : RecyclerView , NestedScrollView и Navigation .

Версия 1.0.0-бета03

7 августа 2019 г.

Выпущен androidx.viewpager2:viewpager2:1.0.0-beta03 . Коммиты, включенные в эту версию, можно найти здесь .

Исправления ошибок

  • Исправлена ​​проблема FragmentStateAdapter с временным состоянием Fragment . б/134246546
  • Исправлены проблемы currentItem и scrollState , когда набор данных изменяется во время плавной прокрутки (устранены крайние случаи). б/137642608
  • Исправлена ​​анимация PageTransformer (включая MarginPageTransformer ), конфликтующая с анимацией изменения набора данных. б/134658996
  • Исправлена ​​анимация плавной прокрутки в больших наборах данных (предел целочисленного значения float ). б/134858960

Версия 1.0.0-бета02

19 июля 2019 г.

Выпущен androidx.viewpager2:viewpager2:1.0.0-beta02 . Коммиты, включенные в эту версию, можно найти здесь .

Исправления ошибок

  • Удалена непреднамеренная зависимость jacoco, появившаяся в 1.0.0-beta01 . ( б / 137782951 )

Версия 1.0.0-бета01

17 июля 2019 г.

Выпущен androidx.viewpager2:viewpager2:1.0.0-beta01 . Коммиты, включенные в эту версию, можно найти здесь .

Исправления ошибок

  • Исправлен сбой ViewPager2.updateCurrentItem при прокрутке и обновлении набора данных.
  • Исправлен сбой NullPointerException , связанный с ViewPager2.isLayoutRtl
  • TOUCH_SLOP_PAGING теперь сенсорный экран по умолчанию.
  • События OnPageChangeCallback исправлены для пустых адаптеров (страница 0 вместо -1 для проверки четности с ViewPager1 )

Известные проблемы

Версия 1.0.0-альфа06

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 : документация для фиксированной position .

Исправления ошибок

  • Исправлен currentItem после изменения набора данных/изменения адаптера.
  • Исправлена ​​проблема MarginPageTransformer с offscreenPageLimit .
  • Исправлено поведение специальных возможностей в режиме FakeDrag .

Версия 1.0.0-альфа05

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-альфа04

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-альфа03

3 апреля 2019 г.

Выпущен androidx.viewpager2:viewpager2:1.0.0-alpha03 . Коммиты, включенные в эту версию, можно найти здесь .

Новые возможности

  • Возможность программной прокрутки ViewPager2: fakeDragBy(offsetPx) .

Изменения API

  • FragmentStateAdapter теперь требует объекта Lifecycle . Добавлены два служебных конструктора для получения его от хоста FragmentActivity или хоста Fragment .

Исправления ошибок

  • Многочисленные исправления поддержки Fragment :
    • обработка обновлений набора данных в свернутом виде или во время поворота экрана;
    • удаление ненужных фрагментов после ротации;
    • удаление сохраненного состояния удаленных элементов.
  • PageChangeCallback : исправлен расчет смещения страницы для страниц с полями.

Версия 1.0.0-альфа02

13 марта 2019 г.

Выпущен androidx.viewpager2:viewpager2:1.0.0-alpha02 . Полный список коммитов, включённых в эту версию, можно найти здесь .

Новые возможности

  • Возможность отключить пользовательский ввод ( setUserInputEnabled , isUserInputEnabled )

Изменения API

  • Финальный класс ViewPager2

Исправления ошибок

  • Исправления стабильности FragmentStateAdapter

Версия 1.0.0-альфа01

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

Известные проблемы

  • клипТоПаддинг
  • нет фейкаПеретащить
  • JavaDoc
  • вложенная прокрутка параллельно ориентации
  • нет контроля за пределами экрана
  • нужна лучшая интеграция TabLayout
  • нет параметра ширины страницы (принудительно 100%/100%)
  • преобразователь страниц: нет выбора аппаратного/программного уровня; нет обратного порядка рисования
  • сохранять текущий элемент видимым при вставке страницы перед текущей
  • навигация с клавиатуры требует доработки
  • Ожидаются улучшения стабильности и производительности FragmentStateAdapter
,

ПросмотрПейджер2

Отображение представлений или фрагментов в пролистываемом формате.
Последнее обновление Стабильный выпуск Кандидат на выпуск Бета-версия Альфа-релиз
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 , которые RecyclerView 1.2.0-alpha02 и выше больше не заполняются по умолчанию.
  • Добавлен интерфейс FragmentTransactionCallback для прослушивания изменений жизненного цикла фрагмента, которые происходят внутри FragmentStateAdapter .
  • Исправлена ​​проблема FragmentStateAdapter с начальной видимостью меню фрагмента при добавлении фрагмента в FragmentManager .
  • Исправлена ​​отправка вставок окон: все страницы теперь имеют одинаковые вставки. Из-за того, что WindowInsets отправляются в старых версиях API (< API 30), которые могут препятствовать доступности вставок для одноуровневых представлений, вы должны согласиться на это исправление через WindowInsetsApplier.install(viewPager2) если вы хотите применять вставки на устройствах с < API 30 .

Версия 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 )
  • ViewPager2 теперь больше не пытается исправить некорректную отправку WindowInsets старых версий API (< 30), поскольку само исправление может быть вредным для братьев и сестер ViewPager2 . Исправление все еще доступно, но оно стало добровольным, поэтому разработчики могут принимать решение в каждом конкретном случае. Включите исправление, вызвав WindowInsetsApplier.install(viewPager2)) . ( Ic9a85 )

Исправления ошибок

  • Устраните проблемы совместимости с более новыми версиями RecyclerView . Пользователям этой версии ViewPager2 следует обновиться как минимум до RecyclerView 1.3.1-rc01.

Версия 1.1.0-бета01

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-альфа01

1 апреля 2020 г.

Выпущен androidx.viewpager2:viewpager2:1.1.0-alpha01 . Версия 1.1.0-alpha01 содержит эти коммиты.

Этот выпуск сопровождает изменение в RecyclerView 1.2.0-alpha02 путем заполнения CollectionInfo и CollectionItemInfo , которые RecyclerView больше не предоставляет по умолчанию. При обновлении до RecyclerView 1.2.0-alpha02 также обновите ViewPager2 чтобы предотвратить ухудшение доступности.

Новые возможности

  • Добавлен интерфейс FragmentTransactionCallback для прослушивания изменений жизненного цикла фрагмента, которые происходят внутри FragmentStateAdapter . ( Ибда77 )

Исправления ошибок

  • Исправлена ​​проблема FragmentStateAdapter с начальной видимостью меню фрагмента при добавлении фрагмента в FragmentManager . ( I9d2ff , б/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-бета05

9 октября 2019 г.

Выпущен androidx.viewpager2:viewpager2:1.0.0-beta05 . Версия 1.0.0-beta05 содержит эти коммиты .

Исправления ошибок

  • Исправлен запрос requestFocus на странице за пределами экрана, вызывающий изменение страницы. Поведение теперь соответствует исходному ViewPager. ( б / 140656866 )
  • Исправлена ​​ошибка, из-за которой focus оставался на странице за кадром после смены страницы. Фокус теперь очищается при смене страницы. ( б / 140656866 )
  • Исправлен порядок транзакций паузы/возобновления Fragment при смене страницы (теперь мы всегда приостанавливаем старый основной элемент перед возобновлением нового). ( б / 139489059 )
  • Исправление для canScrollHorizontally(int) и canScrollVertically(int) — теперь они возвращают, может ли ViewPager2 прокручиваться в заданном направлении. ( б / 141848404 )
  • Исправлена ​​проблема в SwipeRefreshLayout для лучшей работы с ViewPager2.

Версия 1.0.0-beta04

5 сентября 2019 г.

Выпущен androidx.viewpager2:viewpager2:1.0.0-beta04 . Коммиты, включенные в эту версию, можно найти здесь .

Исправления ошибок

  • Исправлена ​​проблема с крайним регистром FragmentStateAdapter с обратным стеком Fragment . ( б / 139095195 )
  • Исправлена ​​ошибка EditText с определенными конфигурациями атрибутов, приводившая к прокрутке/переходу страницы при вводе/фокусе. ( б / 138044582 , б / 139432498 )
  • Исправлена ​​проблема с экземплярами ItemDecoration и обходной путь для позиционирования индикатора чрезмерной прокрутки. ( б / 139012032 )
  • Ряд проблем был исправлен в других компонентах для лучшей работы с ViewPager2 : RecyclerView , NestedScrollView и Navigation .

Версия 1.0.0-бета03

7 августа 2019 г.

Выпущен androidx.viewpager2:viewpager2:1.0.0-beta03 . Коммиты, включенные в эту версию, можно найти здесь .

Исправления ошибок

  • Исправлена ​​проблема FragmentStateAdapter с временным состоянием Fragment . б/134246546
  • Исправлены проблемы currentItem и scrollState , когда набор данных изменяется во время плавной прокрутки (устранены крайние случаи). б/137642608
  • Исправлена ​​анимация PageTransformer (включая MarginPageTransformer ), конфликтующая с анимацией изменения набора данных. б/134658996
  • Исправлена ​​анимация плавной прокрутки в больших наборах данных (ограничение целочисленного значения float ). б/134858960

Версия 1.0.0-бета02

19 июля 2019 г.

Выпущен androidx.viewpager2:viewpager2:1.0.0-beta02 . Коммиты, включенные в эту версию, можно найти здесь .

Исправления ошибок

  • Удалена непреднамеренная зависимость jacoco, появившаяся в 1.0.0-beta01 . ( б / 137782951 )

Версия 1.0.0-бета01

17 июля 2019 г.

Выпущен androidx.viewpager2:viewpager2:1.0.0-beta01 . Коммиты, включенные в эту версию, можно найти здесь .

Исправления ошибок

  • Исправлен сбой ViewPager2.updateCurrentItem при прокрутке и обновлении набора данных.
  • Исправление сбоя NullPointerException , связанного с ViewPager2.isLayoutRtl
  • TOUCH_SLOP_PAGING теперь сенсорный экран по умолчанию.
  • События OnPageChangeCallback исправлены для пустых адаптеров (страница 0 вместо -1 для проверки четности с ViewPager1 )

Известные проблемы

Версия 1.0.0-альфа06

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 : документация для фиксированной position .

Исправления ошибок

  • Исправлен currentItem после изменения набора данных/изменения адаптера.
  • Исправлена ​​проблема MarginPageTransformer с offscreenPageLimit .
  • Исправлено поведение специальных возможностей в режиме FakeDrag .

Версия 1.0.0-альфа05

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-альфа04

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-альфа03

3 апреля 2019 г.

Выпущен androidx.viewpager2:viewpager2:1.0.0-alpha03 . Коммиты, включенные в эту версию, можно найти здесь .

Новые возможности

  • Возможность программной прокрутки ViewPager2: fakeDragBy(offsetPx) .

Изменения API

  • FragmentStateAdapter теперь требует объекта Lifecycle . Добавлены два служебных конструктора для получения его от хоста FragmentActivity или хоста Fragment .

Исправления ошибок

  • Многочисленные исправления поддержки Fragment :
    • обработка обновлений набора данных в свернутом виде или во время поворота экрана;
    • удаление ненужных фрагментов после ротации;
    • удаление сохраненного состояния удаленных элементов.
  • PageChangeCallback : исправлен расчет смещения страницы для страниц с полями.

Версия 1.0.0-альфа02

13 марта 2019 г.

Выпущен androidx.viewpager2:viewpager2:1.0.0-alpha02 . Полный список коммитов, включённых в эту версию, можно найти здесь .

Новые возможности

  • Возможность отключить пользовательский ввод ( setUserInputEnabled , isUserInputEnabled )

Изменения API

  • Финальный класс ViewPager2

Исправления ошибок

  • Исправления стабильности FragmentStateAdapter

Версия 1.0.0-альфа01

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

Известные проблемы

  • клипТоПаддинг
  • нет фейкаПеретащить
  • JavaDoc
  • вложенная прокрутка параллельно ориентации
  • нет контроля за пределами экрана
  • нужна лучшая интеграция TabLayout
  • нет параметра ширины страницы (принудительно 100%/100%)
  • преобразователь страниц: нет выбора аппаратного/программного уровня; нет обратного порядка рисования
  • сохранять текущий элемент видимым при вставке страницы перед текущей
  • навигация с клавиатуры требует доработки
  • Грядут улучшения стабильности и производительности FragmentStateAdapter