ViewPager2
| Actualización más reciente | Versión estable | Versión potencial | Versión beta | Versión alfa |
|---|---|---|---|---|
| 14 de mayo de 2024 | 1.1.0 | - | - | - |
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.1.0" }
Kotlin
dependencies { implementation("androidx.viewpager2:viewpager2:1.1.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 de esta biblioteca antes de crear uno nuevo. Puedes agregar tu voto a un error existente haciendo clic en el botón de la estrella.
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
14 de mayo de 2024
Lanzamiento de androidx.viewpager2:viewpager2:1.1.0. La versión 1.1.0 contiene estas confirmaciones.
Cambios importantes desde 1.0.0
- Se corrigieron las fallas que se producían cuando se usaba con RecyclerView
1.3.1-rc01o versiones posteriores. ViewPager2ahora propaga correctamente elCollectionInfoy elCollectionItemInfoque RecyclerView1.2.0-alpha02y las versiones posteriores ya no propagan de forma predeterminada.- Se agregó la interfaz de
FragmentTransactionCallbackpara escuchar los cambios del ciclo de vida de los fragmentos que ocurren dentro deFragmentStateAdapter - Se solucionó el problema de
FragmentStateAdaptercon la visibilidad del menú de un fragmento inicial cuando se agregaba un fragmento aFragmentManager - Se corrigió el despacho de las inserciones de ventana: todas las páginas ahora tienen las mismas inserciones. Debido a la forma en que se despachan
WindowInsetsen versiones anteriores de la API (< API 30) que pueden evitar que las inserciones estén disponibles para vistas del mismo nivel, debes habilitar esta corrección a través deWindowInsetsApplier.install(viewPager2)si deseas aplicar inserciones en dispositivos con un nivel de API inferior a 30.
Versión 1.1.0-rc01
1 de mayo de 2024
Lanzamiento de androidx.viewpager2:viewpager2:1.1.0-rc01 sin cambios notables desde la versión 1.1.0-beta02. La versión 1.1.0-rc01 contiene estas confirmaciones.
Versión 1.1.0-beta02
24 de mayo de 2023
Lanzamiento de androidx.viewpager2:viewpager2:1.1.0-beta02. La versión 1.1.0-beta02 contiene estas confirmaciones.
Cambios en la API
- Se agregaron a
FragmentTransactionCallbackdevoluciones de llamada que guardan el estado del fragmento. (I45b90) ViewPager2ya no intenta corregir el envío deWindowInsetsdañado de versiones anteriores de la API (< 30), porque la corrección en sí puede ser dañina para los hermanos deViewPager2. La corrección aún está disponible, pero se convirtió en una opción para que los desarrolladores puedan decidir caso por caso. Para habilitar la corrección, llama aWindowInsetsApplier.install(viewPager2)). (Ic9a85).
Correcciones de errores
- Se solucionaron problemas de compatibilidad con versiones más recientes de
RecyclerView. Los usuarios de esta versión deViewPager2deben actualizar al menos aRecyclerView1.3.1-rc01.
Versión 1.1.0-beta01
4 de agosto de 2021
Lanzamiento de androidx.viewpager2:viewpager2:1.1.0-beta01. La versión 1.1.0-beta01 contiene estas confirmaciones.
Cambios en la API
Actualiza AndroidX para usar Kotlin 1.4 (Id6471, b/165307851, b/165300826)
Se movió a la orientación a Java 8 para todas las bibliotecas de AndroidX. (2923f39).
Correcciones de errores
- Se corrigió el despacho de las inserciones de ventana, y todas las páginas ahora tienen las mismas inserciones. (I47fef)
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
FragmentTransactionCallbackpara escuchar los cambios del ciclo de vida de los fragmentos que ocurren dentro deFragmentStateAdapter(Ibda77).
Correcciones de errores
- Se solucionó el problema de
FragmentStateAdaptercon la visibilidad del menú de un fragmento inicial cuando se agregaba un fragmento aFragmentManager(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
Fragmentconfiable (incluido el control de cambios en la colecciónFragmentsubyacente) - 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
requestFocusprovocaba un cambio de página. Ahora, el comportamiento es coherente con la versión ViewPager original (b/140656866). - Se corrigió que
focuspermanecí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
Fragmentcuando 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)ycanScrollVertically(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
FragmentStateAdaptercon la pila de actividades deFragment(b/139095195). - Se corrigió un error de
EditTextcon 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
ItemDecorationy 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
FragmentStateAdaptercon el estado transitorio deFragment(b/134246546). - Se corrigieron los problemas con
currentItemyscrollStatecuando se cambia un conjunto de datos durante un desplazamiento suave (casos límite) (b/137642608). - Se corrigieron las animaciones de
PageTransformer(y las deMarginPageTransformer) 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.updateCurrentItemque se producía durante el desplazamiento y la actualización de conjuntos de datos. - Se corrigió la falla de
NullPointerExceptionrelacionada conViewPager2.isLayoutRtl. TOUCH_SLOP_PAGINGahora tiene una configuración táctil predeterminada.- Se corrigieron los eventos
OnPageChangeCallbackpara los adaptadores vacíos (con página0en lugar de-1, para lograr paridad conViewPager1).
Errores conocidos
- Todavía estamos trabajando en los problemas pendientes restantes, antes de pasar a la versión estable.
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 deFragmenttienen un límite deSTARTED, y sumenuVisibilityse configura como falso.PageTransformer,MarginPageTransformer,CompositePageTransformer: Se corrigió la documentación paraposition.
Correcciones de errores
- Se corrigió
currentItemcuando ocurre un cambio en el conjunto de datos o el adaptador. - Se corrigió el problema de
MarginPageTransformerrelacionado conoffscreenPageLimit. - 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
ItemDecoratorcon un comportamiento coherente conRecyclerView. - Se introdujo
MarginPageTransformerpara proporcionar la capacidad de crear espacio entre páginas (fuera del recuadro). - Se introdujo
CompositePageTransformerpara proporcionar la capacidad de combinar múltiplesPageTransformer.
Cambios en la API
- Se cambió el nombre del método
FragmentStateAdapter#getItemporFragmentStateAdapter#createFragment: el nombre anterior resultó ser una fuente de errores en el pasado. - Se cambió el valor de
OFFSCREEN_PAGE_LIMIT_DEFAULTde0a-1. No es necesario cambiar el código cliente si se usa la constanteOFFSCREEN_PAGE_LIMIT_DEFAULT.
Correcciones de errores
- Se corrigió el comportamiento de
getCurrentItem()cuando aSCROLL_STATE_SETTLINGlo interrumpe un arrastre en la dirección opuesta. - Se solucionaron los problemas del cargador de la clase
FragmentStateAdapteren 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 objetosViewoFragmentde páginas que se mantienen en la jerarquía de vistas.
Cambios en la API
- Los atributos
orientationeisUserScrollableya no forman parte deSavedState. - Los métodos
saveStateyrestoreStatepasaron a ser definitivos enFragmentStateAdapter. - Las anotaciones
ViewPager2.OrientationyViewPager2.ScrollStateya no son públicas.
Correcciones de errores
SavedState: Se solucionó un problema relacionado con la restauración cuando se destruía o se recreaba unaActivity.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
FragmentStateAdapterahora requiere un objetoLifecycle. Se agregaron dos constructores de utilidades para obtenerlo del hostFragmentActivityo del hostFragment.
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
notifyDataSetChangedcompletamente funcional (se corrigieron errores de VP1)
Cambios en la API
FragmentStateAdapterreemplaza aFragmentStatePagerAdapterRecyclerView.Adapterreemplaza aPagerAdapterregisterOnPageChangeCallbackreemplaza aaddPageChangeListener
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