ViewPager2
Actualización más reciente | Versión estable | Versión potencial | Versión beta | Versión alfa |
---|---|---|---|---|
4 de agosto de 2021 | 1.0.0 | - | 1.1.0-beta01 | - |
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. 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.
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-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
FragmentTransactionCallback
para escuchar los cambios del ciclo de vida de los fragmentos que ocurren dentro deFragmentStateAdapter
(Ibda77).
Correcciones de errores
- Se solucionó el problema de
FragmentStateAdapter
con 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
Fragment
confiable (incluido el control de cambios en la colecciónFragment
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)
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
FragmentStateAdapter
con la pila de actividades deFragment
(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 deFragment
(b/134246546). - Se corrigieron los problemas con
currentItem
yscrollState
cuando 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 artículo.
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 conViewPager2.isLayoutRtl
. TOUCH_SLOP_PAGING
ahora tiene una configuración táctil predeterminada.- Se corrigieron los eventos
OnPageChangeCallback
para los adaptadores vacíos (con página0
en 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 deFragment
tienen un límite deSTARTED
, y sumenuVisibility
se configura como falso.PageTransformer
,MarginPageTransformer
,CompositePageTransformer
: Se corrigió la documentación paraposition
.
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 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 artículo.
Nuevas funciones
- Se introdujo
ItemDecorator
con un comportamiento coherente conRecyclerView
. - 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últiplesPageTransformer
.
Cambios en la API
- Se cambió el nombre del método
FragmentStateAdapter#getItem
porFragmentStateAdapter#createFragment
: el nombre anterior resultó ser una fuente de errores en el pasado. - Se cambió el valor de
OFFSCREEN_PAGE_LIMIT_DEFAULT
de0
a-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_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 objetosView
oFragment
de páginas que se mantienen en la jerarquía de vistas.
Cambios en la API
- Los atributos
orientation
eisUserScrollable
ya no forman parte deSavedState
. - Los métodos
saveState
yrestoreState
pasaron a ser definitivos enFragmentStateAdapter
. - Las anotaciones
ViewPager2.Orientation
yViewPager2.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 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 artículo.
Nuevas funciones
- Capacidad para desplazar ViewPager2 de manera programática:
fakeDragBy(offsetPx)
.
Cambios en la API
FragmentStateAdapter
ahora requiere un objetoLifecycle
. Se agregaron dos constructores de utilidades para obtenerlo del hostFragmentActivity
o 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
notifyDataSetChanged
completamente funcional (se corrigieron errores de VP1)
Cambios en la API
FragmentStateAdapter
reemplaza aFragmentStatePagerAdapter
RecyclerView.Adapter
reemplaza aPagerAdapter
registerOnPageChangeCallback
reemplaza 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