ViewPager2

Muestra objetos de Views o Fragments en formato horizontal 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:

    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. Consulta los errores existentes en esta biblioteca antes de crear uno nuevo. Para agregar tu voto a un error existente, haz clic en el botón de la estrella.

Crea 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 propagando CollectionInfo y CollectionItemInfo, que RecyclerView ya no proporciona de forma predeterminada. Cuando actualices a RecyclerView 1.2.0-alpha02, también actualiza 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 FragmentStateAdapter relacionado con la visibilidad del menú de 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 consistente con la versión ViewPager original (b/140656866).
  • Se corrigió el focus restante 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 artículo.

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 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 artículo.

Correcciones de errores

  • Se corrigió el problema FragmentStateAdapter relacionado con el estado transitorio de Fragment (b/134246546).
  • Se corrigieron los problemas 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 (incluida MarginPageTransformer) que entraban en conflicto con las animaciones de cambio de 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 artículo.

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 eventos OnPageChangeCallback para adaptadores vacíos (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 después del cambio de conjunto de datos y el cambio de 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 artículo.

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: se demostró que el nombre anterior fue 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 artículo.

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 artículo.

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 actualizaciones de conjuntos de datos cuando se minimiza o durante una rotación de pantalla
    • Eliminación de fragmentos irrelevantes después de la 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 establecedor de pageWidth (obligatorio: 100%/100%)
  • Transformador de página: 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