Google is committed to advancing racial equity for Black communities. See how.

ViewPager2

Display Views or Fragments in a swipeable format.

Latest Update Current Stable Release Next Release Candidate Beta Release Alpha Release April 1, 2020 1.0.0 - - 1.1.0-alpha01

AndroidX Dependencies

To use ViewPager2 , add the following AndroidX dependency to your project's build.gradle file:

dependencies { implementation "androidx.viewpager2:viewpager2:1.0.0" }

Feedback

Your feedback helps make Jetpack better. Let us know if you discover new issues or have ideas for improving this library. Please take a look at the existing issues in this library before you create a new one. You can add your vote to an existing issue by clicking the star button.

Create a new issue

See the Issue Tracker documentation for more information.

Version 1.1.0

Version 1.1.0-alpha01

April 1, 2020

androidx.viewpager2:viewpager2:1.1.0-alpha01 is released. Version 1.1.0-alpha01 contains these commits.

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.

New Features

Added FragmentTransactionCallback interface for listening to fragment lifecycle changes that happen inside FragmentStateAdapter . (Ibda77)

Bug Fixes

Fixed FragmentStateAdapter issue with initial fragment menu visibility when adding a fragment to the FragmentManager . (I9d2ff, b/144442240)

Version 1.0.0

Version 1.0.0

November 20, 2019

androidx.viewpager2:viewpager2:1.0.0 is released with no changes from 1.0.0-rc01. Version 1.0.0 contains these commits.

Major features of 1.0.0

Improvements from the previous ViewPager implementation: RTL (right-to-left) layout support Vertical orientation support Reliable Fragment support (including handling changes to the underlying Fragment collection) Dataset change animations (including DiffUtil support)

Easy migration from the previous ViewPager implementation (API parity where possible). See the migration guide and the sample app.

See the guide on using ViewPager2 to slide between Fragments.

Version 1.0.0-rc01

October 23, 2019

androidx.viewpager2:viewpager2:1.0.0-rc01 is released with no changes since 1.0.0-beta05 . Version 1.0.0-rc01 contains these commits.

Version 1.0.0-beta05

October 9, 2019

androidx.viewpager2:viewpager2:1.0.0-beta05 is released. Version 1.0.0-beta05 contains these commits.

Bug fixes

Fix for requestFocus on an off-screen page causing a page change. The behaviour is now consistent with the original ViewPager. (b/140656866)

on an off-screen page causing a page change. The behaviour is now consistent with the original ViewPager. (b/140656866) Fix for focus remaining on an off-screen page after a page change. Focus is now cleared when changing the page. (b/140656866)

remaining on an off-screen page after a page change. Focus is now cleared when changing the page. (b/140656866) Fix for ordering of Fragment pause / resume transactions when changing the page (we now always pause the old primary item before resuming the new one). (b/139489059)

pause / resume transactions when changing the page (we now always pause the old primary item before resuming the new one). (b/139489059) Fix for canScrollHorizontally(int) and canScrollVertically(int) - they now return whether ViewPager2 can scroll in the given direction. (b/141848404)

and - they now return whether ViewPager2 can scroll in the given direction. (b/141848404) An issue in SwipeRefreshLayout was fixed to work better with ViewPager2.

Version 1.0.0-beta04

September 5, 2019

androidx.viewpager2:viewpager2:1.0.0-beta04 is released. The commits included in this version can be found here.

Bug fixes

Fix for FragmentStateAdapter edge-case issue with Fragment back stack. (b/139095195)

edge-case issue with back stack. (b/139095195) Fix for EditText with certain attribute configurations causing a scroll/page jump on typing/focus. (b/138044582, b/139432498)

with certain attribute configurations causing a scroll/page jump on typing/focus. (b/138044582, b/139432498) Fix for an issue with ItemDecoration instances, and a workaround for overscroll indicator positioning. (b/139012032)

instances, and a workaround for overscroll indicator positioning. (b/139012032) A number of issues were fixed in other components to work better with ViewPager2 : RecyclerView, NestedScrollView, and Navigation.

Version 1.0.0-beta03

August 7, 2019

androidx.viewpager2:viewpager2:1.0.0-beta03 is released. The commits included in this version can be found here.

Bug fixes

Fix for FragmentStateAdapter issue with transient Fragment state. b/134246546

issue with transient state. b/134246546 Fix for currentItem and scrollState issues when a data-set is changed during a smooth-scroll (edge cases addressed). b/137642608

and issues when a data-set is changed during a smooth-scroll (edge cases addressed). b/137642608 Fix for PageTransformer (including MarginPageTransformer ) animations conflicting with data-set change animations. b/134658996

(including ) animations conflicting with data-set change animations. b/134658996 Fix for smooth-scroll animations in large datasets ( float integer value limit). b/134858960

Version 1.0.0-beta02

July 19, 2019

androidx.viewpager2:viewpager2:1.0.0-beta02 is released. The commits included in this version can be found here.

Bug fixes

Removed unintentional jacoco dependency that was introduced in 1.0.0-beta01 . (b/137782951)

Version 1.0.0-beta01

July 17, 2019

androidx.viewpager2:viewpager2:1.0.0-beta01 is released. The commits included in this version can be found here.

Caution: This version contains an unintentional dependency on org.jacoco:org.jacoco.agent:0.8.3 , which can cause a build failure. Please update to the latest version, in which this dependency has been removed.

Bug fixes

Fix for ViewPager2.updateCurrentItem crash while scrolling and updating data-set

crash while scrolling and updating data-set Fix for NullPointerException crash related to ViewPager2.isLayoutRtl

crash related to TOUCH_SLOP_PAGING now a default touch slop

now a default touch slop OnPageChangeCallback events fixed for empty adapters (page 0 instead of -1 for parity with ViewPager1 )

Known issues

We are still working on the remaining open issues before moving to Stable

Version 1.0.0-alpha06

July 2, 2019

androidx.viewpager2:viewpager2:1.0.0-alpha06 is released. The commits included in this version can be found here.

This is our last planned alpha before freezing the API and moving to beta - please provide us with API feedback.

New features

Foundations for improved Accessibility: ACTION_PAGE_RIGHT , ACTION_PAGE_DOWN , etc.

API changes

FragmentStateAdapter : non-primary-item Fragment s are capped at STARTED , and their menuVisibility is set to false.

: non-primary-item s are capped at , and their is set to false. PageTransformer , MarginPageTransformer , CompositePageTransformer : documentation for position fixed.

Bug fixes

currentItem after data-set change / adapter change fixed.

after data-set change / adapter change fixed. MarginPageTransformer with offscreenPageLimit issue fixed.

with issue fixed. Accessibility actions while in FakeDrag behaviour fixed.

Version 1.0.0-alpha05

June 5, 2019

androidx.viewpager2:viewpager2:1.0.0-alpha05 is released. The commits included in this version can be found here.

New features

ItemDecorator introduced with a behaviour consistent with RecyclerView .

introduced with a behaviour consistent with . MarginPageTransformer introduced to provide an ability to create space between pages (outside of page inset).

introduced to provide an ability to create space between pages (outside of page inset). CompositePageTransformer introduced to provide an ability to combine multiple PageTransformer s.

API changes

FragmentStateAdapter#getItem method renamed to FragmentStateAdapter#createFragment - previous method name has proven to be a source of bugs in the past.

method renamed to - previous method name has proven to be a source of bugs in the past. OFFSCREEN_PAGE_LIMIT_DEFAULT value changed from 0 to -1 . No need for a client code change if the OFFSCREEN_PAGE_LIMIT_DEFAULT constant used.

Bug fixes

getCurrentItem() behaviour corrected when SCROLL_STATE_SETTLING gets interrupted by a drag in the opposite direction.

behaviour corrected when gets interrupted by a drag in the opposite direction. FragmentStateAdapter class loader issues addressed in the "Don't keep activities" context.

class loader issues addressed in the "Don't keep activities" context. setOffscreenPageLimit documentation improved.

Version 1.0.0-alpha04

May 7, 2019

androidx.viewpager2:viewpager2:1.0.0-alpha04 is released. The commits included in this version can be found here.

New features

offscreenPageLimit : allows for a tight control of the number of page View s / Fragment s kept in the view hierarchy

API changes

orientation and isUserScrollable attributes are no longer part of SavedState

and attributes are no longer part of saveState and restoreState methods made final in FragmentStateAdapter

and methods made final in ViewPager2.Orientation and ViewPager2.ScrollState annotations made non-public

Bug fixes

SavedState : fixed an issue with restoring when Activity gets destroyed / recreated

: fixed an issue with restoring when gets destroyed / recreated SavedState : delayed restoring until the adapter is set

: delayed restoring until the adapter is set OnPageChangeCallback : minor edge cases fixed

Version 1.0.0-alpha03

April 3rd, 2019

androidx.viewpager2:viewpager2:1.0.0-alpha03 is released. The commits included in this version can be found here.

New features

Ability to programmatically scroll ViewPager2: fakeDragBy(offsetPx) .

API changes

FragmentStateAdapter now requires a Lifecycle object. Two utility constructors added to obtain it from the host FragmentActivity or the host Fragment .

Bug fixes

Numerous Fragment support fixes: handling dataset updates while minimised, or during a screen rotation; removing irrelevant Fragments after rotation; removing saved state of removed items.

support fixes: PageChangeCallback : fixed page offset calculation for pages with margins.

Version 1.0.0-alpha02

March 13, 2019

androidx.viewpager2:viewpager2:1.0.0-alpha02 is released. The full list of commits included in this version can be found here.

New features

Ability to disable user input ( setUserInputEnabled , isUserInputEnabled )

API changes

ViewPager2 class final

Bug fixes

FragmentStateAdapter stability fixes

Version 1.0.0-alpha01

February 7, 2019

androidx.viewpager2:viewpager2 1.0.0-alpha01 is released. This is the first release of ViewPager2.

New features

Comparing to its predecessor android.support.v4.view.ViewPager (VP1): Right-to-left (RTL) layout support Vertical orientation support notifyDataSetChanged fully functional (VP1 bugs addressed)

(VP1):

API changes

FragmentStateAdapter replaces FragmentStatePagerAdapter

replaces RecyclerView.Adapter replaces PagerAdapter

replaces registerOnPageChangeCallback replaces addPageChangeListener

Known issues