Estoy usando Android ViewPager
. Lo que quiero hacer es mostrar una vista previa de la página tanto a la izquierda como a la derecha. He visto dónde puedo usar un negativo pageMargin
para mostrar una vista previa del lado derecho.
setPageMargin(-100);
¿Hay alguna forma de que pueda mostrar una vista previa del lado izquierdo también? Es básicamente algo similar al widget de galería que estoy buscando.
android
android-viewpager
Brian Boyle
fuente
fuente
setPageMargin(-100)
Funciona correctamente?Respuestas:
Para mostrar la vista previa de las páginas izquierda y derecha, establezca los dos valores siguientes
viewpager.setClipToPadding(false);
viewpager.setPadding(left,0,right,0);
Si necesita espacio entre dos páginas en el visor, agregue
fuente
La respuesta de @JijuInduchoodan es perfecta y funciona. Sin embargo, dado que soy relativamente nuevo en Android, me tomó un tiempo entenderlo y configurarlo correctamente. Por lo tanto, estoy publicando esta respuesta para referencia futura y ayudar a cualquier otra persona que esté en mis mismos zapatos.
No es necesario establecer ningún ancho para la
ViewPager's
página en el adaptador. No se requiere código adicional para ver la página anterior y siguiente enViewPager
. Sin embargo, si desea agregar un espacio en blanco en la parte superior e inferior de cada página, puede configurar el siguiente código paraViewPager's
el diseño principal de la página secundaria.Este será el aspecto final de ViewPager.
fuente
Solución con el nuevo ViewPager2
Hoy en día debería considerar el uso de ViewPager2 que "reemplaza a ViewPager, abordando la mayoría de los puntos débiles de su predecesor" :
El resultado
El código
En su Actividad / Fragmento, configure ViewPager2:
Agregue el
HorizontalMarginItemDecoration
, que es trivialItemDecoration
:Agregue las dimensiones que controlan cuánto del elemento anterior / siguiente es visible y el margen horizontal del elemento actual:
Finalmente agregue el
ViewPager2
a su diseño:Una cosa importante: un
ViewPager2
elemento debe tenerlayout_height="match_parent"
(de lo contrario, arroja una IllegalStateException), por lo que debe hacer algo como:Ejemplos de PageTransformer
Google ha agregado una guía sobre ViewPager2 que tiene 2
PageTransformer
implementaciones que puede usar como inspiración: https://developer.android.com/training/animation/screen-slide-2Acerca del nuevo ViewPager2
fuente
viewpager.setPageTransformer { page, position -> page.translationX = -1 * position }
setOffscreenPageLimit(1)
:)En 2017 tal comportamiento, además, se puede conseguir fácilmente mediante el uso
RecyclerView
con PagerSnapHelper (añadido en la versión 25.1.0 de biblioteca de soporte v7): Hace algún tiempo necesitaba una función similar a un visor y preparé una pequeña biblioteca:
MetalRecyclerPagerView : puede encontrar todo el código junto con ejemplos allí.
Consiste principalmente en un archivo de clase única: MetalRecyclerViewPager.java (y dos xmls: attrs.xml e ids.xml ).
Espero que ayude a alguien y ahorre algunas horas :)
fuente
new PagerSnapHelper().attachToRecyclerView(recyclerView)
y tengo un ajuste de página.Si alguien todavía está buscando una solución, había personalizado ViewPage para lograrlo sin usar un margen negativo, encuentre un proyecto de muestra aquí https://github.com/44kksharma/Android-ViewPager-Carousel-UI , debería funcionar en la mayoría de los casos, pero usted todavía puede definir el margen de la página con
mPager.setPageMargin(margin in pixel);
fuente
Puede hacer esto en un archivo xml, solo use el siguiente código:
fuente
Para aquellos que luchan por tener esto en diferentes pantallas,
fuente
Tenga en cuenta que cuando no establece ningún relleno de cero en un visor, la ubicación del efecto de borde del visor se estropea, esto es un error del visor, consulte aquí: error del efecto de borde del visor
Puede deshabilitar el efecto de borde configurando
android:overScrollMode="never"
el visor, o puede corregir el error con una versión ligeramente modificada de la clase EdgeEffect : Corrección de ViewPagerEdgeEffectfuente
Utilice este adaptador de fragmentos y clase para ver el visor en scroll izquierdo y derecho. Agregue las clases necesarias para desplazarse y ver las páginas siguientes.
fuente