ViewPager2

Muestra objetos de Views o Fragments en formato deslizable.
Actualización más reciente Versión estable actual Próxima versión potencial Versión beta Versión alfa
1 de abril de 2020 1.0.0 - - 1.1.0-alpha01

Dependencias de AndroidX

Para usar ViewPager2, agrega la siguiente dependencia de AndroidX al archivo build.gradle de tu proyecto:

Groovy

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

Kotlin

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

Comentarios

Tus comentarios ayudan a mejorar Jetpack; avísanos si descubres nuevos errores o tienes ideas para mejorar esta biblioteca. Puedes consultar los errores existentes en ella antes de crear uno nuevo, o hacer clic en el botón de la estrella si quieres agregar tu voto a uno.

Crear un error nuevo

Consulta la documentación sobre la Herramienta de seguimiento de errores para obtener más información.

Versión 1.1.0

Versión 1.1.0-alpha01

1 de abril de 2020

Lanzamiento de androidx.viewpager2:viewpager2:1.1.0-alpha01. La versión 1.1.0-alpha01 contiene estas confirmaciones.

Esta actualización acompaña un cambio en RecyclerView 1.2.0-alpha02 a fin de propagar CollectionInfo y CollectionItemInfo, dado que RecyclerView ya no los proporciona de forma predeterminada. Cuando actualices a RecyclerView 1.2.0-alpha02, actualiza también ViewPager2 para evitar las regresiones de accesibilidad.

Nuevas funciones

  • Se agregó la interfaz de FragmentTransactionCallback para escuchar los cambios del ciclo de vida de los fragmentos que ocurren dentro de FragmentStateAdapter (Ibda77).

Correcciones de errores

  • Se solucionó el problema de FragmentStateAdapter con la visibilidad del menú de un fragmento inicial cuando se agregaba un fragmento a FragmentManager (I9d2ff, b/144442240).

Versión 1.0.0

Versión 1.0.0

20 de noviembre de 2019

Lanzamiento de androidx.viewpager2:viewpager2:1.0.0 sin cambios desde la versión 1.0.0-rc01. La versión 1.0.0 contiene estas confirmaciones.

Funciones principales de la versión 1.0.0

  • Mejoras con respecto a la implementación anterior de ViewPager:
    • Compatibilidad con el diseño de derecha a izquierda (RTL)
    • Compatibilidad con orientación vertical
    • Compatibilidad con Fragment confiable (incluido el control de cambios en la colección Fragment subyacente)
    • Animaciones para cambios en conjuntos de datos (incluida la compatibilidad con DiffUtil)
  • Migración sencilla desde la implementación anterior de ViewPager (paridad de API cuando sea posible). Consulta la guía de migración y la app de muestra.

Consulta la guía acerca del uso de ViewPager2 para deslizar entre fragmentos.

Versión 1.0.0-rc01

23 de octubre de 2019

Lanzamiento de androidx.viewpager2:viewpager2:1.0.0-rc01 sin cambios desde 1.0.0-beta05. La versión 1.0.0-rc01 contiene estas confirmaciones.

Versión 1.0.0-beta05

9 de octubre de 2019

Lanzamiento de androidx.viewpager2:viewpager2:1.0.0-beta05. La versión 1.0.0-beta05 contiene estas confirmaciones.

Correcciones de errores

  • Se corrigió un error en el que una página fuera de la pantalla en requestFocus provocaba un cambio de página. Ahora, el comportamiento es coherente con la versión ViewPager original (b/140656866).
  • Se corrigió que focus permanecía en una página fuera de la pantalla después de un cambio de página. Ahora el foco se borra cuando se cambia la página (b/140656866).
  • Se corrigió el pedido de transacciones de pausa/reanudación de Fragment cuando se cambia la página (ahora siempre pausamos el elemento principal anterior antes de reanudar el nuevo) (b/139489059).
  • Se corrigió un error en canScrollHorizontally(int) y canScrollVertically(int): ahora muestran si ViewPager2 puede desplazarse en la dirección especificada (b/141848404).
  • Se corrigió un error en SwipeRefreshLayout para que funcione mejor con ViewPager2.

Versión 1.0.0-beta04

5 de septiembre de 2019

Lanzamiento de androidx.viewpager2:viewpager2:1.0.0-beta04. Para conocer las confirmaciones incluidas en esta versión, consulta este vínculo.

Correcciones de errores

  • Se corrigió un error de caso límite de FragmentStateAdapter con la pila de actividades de Fragment (b/139095195).
  • Se corrigió un error de EditText con ciertas configuraciones de atributos que hacían que una página o un desplazamiento saltaran al escribir o enfocar (b/138044582, b/139432498).
  • Se corrigió un error con instancias de ItemDecoration y se agregó una solución alternativa para el posicionamiento del indicador de desplazamiento (b/139012032).
  • Se solucionaron varios problemas en otros componentes para que funcionen mejor con ViewPager2: RecyclerView, NestedScrollView y Navigation.

Versión 1.0.0-beta03

7 de agosto de 2019

Lanzamiento de androidx.viewpager2:viewpager2:1.0.0-beta03. Para conocer las confirmaciones incluidas en esta versión, consulta este vínculo.

Correcciones de errores

  • Se corrigió el problema de FragmentStateAdapter con el estado transitorio de Fragment (b/134246546).
  • Se corrigieron los problemas con currentItem y scrollState cuando se cambia un conjunto de datos durante un desplazamiento suave (casos límite) (b/137642608).
  • Se corrigieron las animaciones de PageTransformer (y las de MarginPageTransformer) que entraban en conflicto con las animaciones de cambio de un conjunto de datos (b/134658996).
  • Se corrigieron las animaciones de desplazamiento suave en grandes conjuntos de datos (límite de valor de entero float) (b/134858960).

Versión 1.0.0-beta02

19 de julio de 2019

Lanzamiento de androidx.viewpager2:viewpager2:1.0.0-beta02. Para conocer las confirmaciones incluidas en esta versión, consulta este vínculo.

Correcciones de errores

  • Se quitó una dependencia no intencional de JaCoCo que se introdujo en 1.0.0-beta01 (b/137782951).

Versión 1.0.0-beta01

17 de julio de 2019

Lanzamiento de androidx.viewpager2:viewpager2:1.0.0-beta01. Para conocer las confirmaciones incluidas en esta versión, consulta este vínculo.

Correcciones de errores

  • Se corrigió la falla de ViewPager2.updateCurrentItem que se producía durante el desplazamiento y la actualización de conjuntos de datos.
  • Se corrigió la falla de NullPointerException relacionada con ViewPager2.isLayoutRtl.
  • TOUCH_SLOP_PAGING ahora tiene una configuración táctil predeterminada.
  • Se corrigieron los eventos OnPageChangeCallback para los adaptadores vacíos (con página 0 en lugar de -1, para lograr paridad con ViewPager1).

Errores conocidos

Versión 1.0.0-alpha06

2 julio de 2019

Lanzamiento de androidx.viewpager2:viewpager2:1.0.0-alpha06. Para conocer las confirmaciones incluidas en esta versión, consulta este vínculo.

Esta es nuestra última versión alfa planificada antes de congelar la API y pasar a la versión beta. Envíanos tus comentarios sobre la API.

Nuevas funciones

  • Fundamentos para mejorar la accesibilidad: ACTION_PAGE_RIGHT, ACTION_PAGE_DOWN, etcétera.

Cambios en la API

  • FragmentStateAdapter: Los elementos no principales de Fragment tienen un límite de STARTED, y su menuVisibility se configura como falso.
  • PageTransformer, MarginPageTransformer, CompositePageTransformer: Se corrigió la documentación para position.

Correcciones de errores

  • Se corrigió currentItem cuando ocurre un cambio en el conjunto de datos o el adaptador.
  • Se corrigió el problema de MarginPageTransformer relacionado con offscreenPageLimit.
  • Se corrigieron las acciones de accesibilidad en el comportamiento de FakeDrag.

Versión 1.0.0-alpha05

5 de junio de 2019

Lanzamiento de androidx.viewpager2:viewpager2:1.0.0-alpha05. Para conocer las confirmaciones incluidas en esta versión, consulta este vínculo.

Nuevas funciones

  • Se introdujo ItemDecorator con un comportamiento coherente con RecyclerView.
  • Se introdujo MarginPageTransformer para proporcionar la capacidad de crear espacio entre páginas (fuera del recuadro).
  • Se introdujo CompositePageTransformer para proporcionar la capacidad de combinar múltiples PageTransformer.

Cambios en la API

  • Se cambió el nombre del método FragmentStateAdapter#getItem por FragmentStateAdapter#createFragment: el nombre anterior resultó ser una fuente de errores en el pasado.
  • Se cambió el valor de OFFSCREEN_PAGE_LIMIT_DEFAULT de 0 a -1. No es necesario cambiar el código cliente si se usa la constante OFFSCREEN_PAGE_LIMIT_DEFAULT.

Correcciones de errores

  • Se corrigió el comportamiento de getCurrentItem() cuando a SCROLL_STATE_SETTLING lo interrumpe un arrastre en la dirección opuesta.
  • Se solucionaron los problemas del cargador de la clase FragmentStateAdapter en el contexto "No mantener actividades".
  • Se mejoró la documentación de setOffscreenPageLimit.

Versión 1.0.0-alpha04

7 de mayo de 2019

Lanzamiento de androidx.viewpager2:viewpager2:1.0.0-alpha04. Para conocer las confirmaciones incluidas en esta versión, consulta este vínculo.

Nuevas funciones

  • offscreenPageLimit: Permite un control estricto de la cantidad de objetos View o Fragment de páginas que se mantienen en la jerarquía de vistas.

Cambios en la API

  • Los atributos orientation e isUserScrollable ya no forman parte de SavedState.
  • Los métodos saveState y restoreState pasaron a ser definitivos en FragmentStateAdapter.
  • Las anotaciones ViewPager2.Orientation y ViewPager2.ScrollState ya no son públicas.

Correcciones de errores

  • SavedState: Se solucionó un problema relacionado con la restauración cuando se destruía o se recreaba una Activity.
  • SavedState: Se retrasó la restauración hasta que se configura el adaptador.
  • OnPageChangeCallback: Se solucionaron problemas menores.

Versión 1.0.0-alpha03

3 de abril de 2019

Lanzamiento de androidx.viewpager2:viewpager2:1.0.0-alpha03. Para conocer las confirmaciones incluidas en esta versión, consulta este vínculo.

Nuevas funciones

  • Capacidad para desplazar ViewPager2 de manera programática: fakeDragBy(offsetPx).

Cambios en la API

  • FragmentStateAdapter ahora requiere un objeto Lifecycle. Se agregaron dos constructores de utilidades para obtenerlo del host FragmentActivity o del host Fragment.

Correcciones de errores

  • Diversas correcciones de compatibilidad con Fragment:
    • Manejo de las actualizaciones de los conjuntos de datos cuando los fragmentos están minimizados o durante la rotación de una pantalla
    • Eliminación de fragmentos irrelevantes después de una rotación
    • Eliminación del estado guardado de los elementos quitados
  • PageChangeCallback: Se corrigió el cálculo fijo de desplazamiento de página para páginas con márgenes.

Versión 1.0.0-alpha02

13 de marzo de 2019

Lanzamiento de androidx.viewpager2:viewpager2:1.0.0-alpha02. Para obtener una lista completa de las confirmaciones incluidas en esta versión, consulta este artículo.

Nuevas funciones

  • Capacidad para inhabilitar la entrada del usuario (setUserInputEnabled, isUserInputEnabled).

Cambios en la API

  • Clase final de ViewPager2

Correcciones de errores

  • Correcciones de estabilidad de FragmentStateAdapter.

Versión 1.0.0-alpha01

7 de febrero de 2019

Lanzamiento de androidx.viewpager2:viewpager2 1.0.0-alpha01. Esta es la primera versión de ViewPager2.

Nuevas funciones

  • En comparación con la versión anterior, android.support.v4.view.ViewPager (VP1):
    • Compatibilidad con diseño de derecha a izquierda (RTL)
    • Compatibilidad con orientación vertical
    • notifyDataSetChanged completamente funcional (se corrigieron errores de VP1)

Cambios en la API

  • FragmentStateAdapter reemplaza a FragmentStatePagerAdapter
  • RecyclerView.Adapter reemplaza a PagerAdapter
  • registerOnPageChangeCallback reemplaza a addPageChangeListener

Errores conocidos

  • clipToPadding
  • Sin fakeDrag
  • JavaDoc
  • Desplazamiento anidado paralelo a la orientación
  • Sin control de límite fuera de pantalla
  • Se necesita una mejor integración con TabLayout
  • Sin método set para pageWidth (obligatorio: 100%/100%)
  • PageTransformer: No es posible elegir la capa de hardware/software; no hay opción de orden de dibujo inverso
  • Se mantiene el elemento actual visible al insertar una página antes de la actual
  • Se debe mejorar la navegación del teclado
  • Pronto se aplicarán mejoras en la estabilidad y el rendimiento de FragmentStateAdapter