Múltiples páginas al mismo tiempo en un ViewPager

¿Existe la posibilidad de mostrar dos páginas al mismo tiempo, cuando se utiliza ViewPager ? No estoy buscando un efecto de borde, sino más bien para dos páginas completas al mismo tiempo.

Gracias por adelantado.

Por favor, eche un vistazo al método getPageWidth en el PagerAdapter correspondiente. 0.8f y devolver, por ejemplo, 0.8f para que todas las páginas secundarias abarquen sólo el 80% del ancho de ViewPager.

Más información: http://developer.android.com/reference/android/support/v4/view/PagerAdapter.html#getPageWidth(int)

Vea mi respuesta más actualizada aquí: ¿Puede ViewPager tener varias vistas en cada página?

Descubrí que tal vez una solución aún más simple a través de la especificación de un margen negativo para el ViewPager. He creado el proyecto MultiViewPager en GitHub, que puede que desee echar un vistazo a:

https://github.com/Pixplicity/MultiViewPager

Aunque esta pregunta pide específicamente una solución sin efecto de borde, algunas respuestas aquí proponen la solución alternativa de CommonsWare, como la sugerencia de kaw.

Hay varios problemas con el manejo táctil y la aceleración de hardware con esa solución en particular. Una solución más simple y más elegante, en mi opinión, es especificar un margen negativo para el ViewPager:

 ViewPager.setPageMargin( getResources().getDimensionPixelOffset(R.dimen.viewpager_margin)); 

A continuación, especificó esta dimensión en mi dimens.xml :

 <dimen name="viewpager_margin">-64dp</dimen> 

Para compensar las páginas superpuestas, la vista de contenido de cada página tiene el margen opuesto:

 android:layout_marginLeft="@dimen/viewpager_margin_fix" android:layout_marginRight="@dimen/viewpager_margin_fix" 

Nuevamente en dimens.xml :

 <dimen name="viewpager_margin_fix">32dp</dimen> 

(Tenga en cuenta que la dimensión viewpager_margin_fix es la mitad de la dimensión absoluta viewpager_margin .)

Lo implementamos en la aplicación de prensa holandesa De Telegraaf Krant :

Ejemplo de teléfono en De Telegraaf KrantEjemplo de la tableta

Tienes que anular el método getPageWidth() en el adaptador del viewpager. Por ejemplo:

 @Override public float getPageWidth(int position) { return 0.9f; } 

Intente ese código en su adaptador y entonces usted entenderá.

Vea esa entrada de blog .
PagerContainer técnica se resuelve mi problema.

EDITAR:
Encontré la misma respuesta.
¿Cómo migrar de Galería a HorizontalScrollView & ViewPager?

Puede resolver este problema utilizando getPageWidth en la clase PagerAdapter.

Asegúrese de que su JAR esté actualizado. Como anteriormente ViewPager no era compatible con varias páginas al mismo tiempo.

Float público getPageWidth () {

Return 0.4f; (Puede elegirlo .Para pantalla completa por página debe dar 1f)}

Cree su archivo de diseño: my_layout.xml:

 <?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android"> <FrameLayout android:id="@+id/pager_container" android:layout_width="match_parent" android:layout_height="240dp" android:clipChildren="false"> <android.support.v4.view.ViewPager android:id="@+id/pager" android:layout_width="200dp" android:clipToPadding="false" android:layout_height="200dp" android:layout_marginLeft="70dp" android:layout_marginRight="70dp" android:layout_gravity="center" /> </FrameLayout> </layout> 

El viewpager es aproximadamente tan pequeño como usted quisiera que fueran sus páginas. Con android: clipToPadding = "false" las páginas fuera del buscapersonas también están visibles. Pero ahora arrastrar fuera del viewpager no tiene efecto Esto se puede remediar recolectando toques desde el contenedor de buscapersonas y pasarlos al buscapersonas:

 MyLayoutBinding binding = DataBindingUtil.<MyLayoutBinding>inflate(layoutInflater, R.layout.my_layout, parent, false) binding.pager.setOffscreenPageLimit(3); binding.pager.setPageMargin(15); binding.pagerContainer.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { return chatCollectionLayoutBinding.pager.onTouchEvent(event); } }); 

Puede ser puesto en la disposición del artículo del Viewpager. Suponga que, usted quiere dos páginas a la vez.

Este es el diseño del artículo (photo_slider_item.xml):

  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" style="@style/photosSliderItem"> <ImageView android:id="@id/photoBox1" style="@style/photoBox"/> <ImageView android:id="@id/photoBox2" style="@style/photoBox"/> </LinearLayout> 

Y en su PagerAdapter:

 @Override public View instantiateItem(ViewGroup container, int position){ View sliderItem = LayoutInflater.from(container.getContext()).inflate(photo_slider_item, container, false); ImageView photoBox1 = (ImageView) sliderItem.findViewById(R.id.photoBox1); ImageView photoBox2 = (ImageView) sliderItem.findViewById(R.id.photoBox2); photoBox1.setImageResource(photosIds[position]); if(position < photosIds.length-1){ photoBox2.setImageResource(photosIds[position+1]); } else {photoBox2.setImageResource(photosIds[0]);} container.addView(sliderItem); return sliderItem; } 

No creo que eso sea posible con las limitaciones de un View Pager. Sólo permite al usuario ver las páginas 1 a la vez. Podrías resolver algo con el uso de fragmentos y tener 2 fragmentos de ViewPager uno al lado del otro y usar botones para calcular la página que quieres implementar, pero el código puede llegar a ser muy complejo.

Puedes probar algo como un ViewFlipper – donde puedes hacer muchas más personalizaciones (incluyendo animaciones).

Espero que esto ayude.

  • ¿Cómo dejar que sólo fragmentos específicos desplazarse dentro de un ViewPager de CoordinatorLayout?
  • El menú deslizante bloquea el evento táctil en la vista superior
  • RecyclerView ViewPager java.lang.NullPointerException android.support.v7.widget.RecyclerView $ ItemAnimator $ ItemHolderInfo.left
  • Refrescar vista de fragmentos mientras utiliza FragmentStatePagerAdapter
  • Android ViewPager con la pestaña que no mantiene el estado tras la rotación de la pantalla
  • Cambiar la velocidad de transición de ViewPager y setCurrentItem
  • Cómo mostrar programaticamente la vista siguiente en ViewPager?
  • Cargar sólo un fragmento en ViewPager
  • Destruye las páginas de ViewPager y FragmentStatePagerAdapter
  • Reposición / margen de ViewPager de Android entre fragmentos de página
  • ViewPager dentro de CoordinatorLayout cubre otras vistas en API> = 21
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.