ViewPager no soporta layout_height = wrap_content

Estoy construyendo una aplicación Android con el siguiente diseño. Diseño de la aplicación

Ya se sabe que layout_height="wrap_content" no funciona para ViewPager.

Mi pregunta es cómo cambiarlo dinámicamente. El contenido del ViewPager se infla de dos diseños xml, vp_statistics.xml and vp_campaigns.xml.

Aquí está el xml para ViewPager

 <LinearLayout android:id="@+id/topcontent_wrapper" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:orientation="vertical" > </LinearLayout> <LinearLayout android:id="@+id/viewpager_wrapper" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:orientation="vertical" > <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> 

Aquí está el código para mi PagerAdapter

 class MyPagerAdapter extends PagerAdapter{ @Override public int getCount() { // TODO Auto-generated method stub return 2; } public Object instantiateItem(View collection, int pos){ LayoutInflater inflater = (LayoutInflater)collection.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); int resId = 0; switch(pos){ case 0: resId = R.layout.vp_statistics; break; case 1: resId = R.layout.vp_campaigns; break; } View view = inflater.inflate(resId, null); ((ViewPager)collection).addView(view, 0); return view; } @Override public void destroyItem(ViewGroup container, int position, Object object) { // TODO Auto-generated method stub ((ViewPager)container).removeView((View)object); } @Override public boolean isViewFromObject(View arg0, Object arg1) { // TODO Auto-generated method stub return arg0 == ((View)arg1); } @Override public Parcelable saveState() { // TODO Auto-generated method stub return null; } } 

Y dentro de mi onCreate () mthod de la clase Activity:

 MyPagerAdapter adapter = new MyPagerAdapter(); ViewPager viewPager = (ViewPager)findViewById(R.id.viewpager); viewPager.setAdapter(adapter); viewPager.setCurrentItem(0); 

¿Hay alguna manera de obtener la altura de los diseños vp_statistics.xml y vp_campaigns.xml y asignarlos dinámicamente a ViewPager (@id/viewpager) cada vez que se llama al objeto instantiateItem() ?

  1. Agregue un weightSum=2 al LinearLayout principal y establezca orientation=vertical .
  2. Establece el layout_weight=1 de layout_weight=1 . También, set layout_height=0dip
  3. Envuelva el ViewPager en otro LinearLayout con layout_weight=1 y layout_height=0dip

Yo respondí una pregunta similar aquí .

La solución extiende ViewPager para anular onMeasure() para hacer wrap_content sólo trabajar para la altura.

0dp lugar de wrap_content , y para cambiar dinámicamente ese

 pager = new ViewPager(this); pager.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 

Para asignar diferentes propiedades de pantalla a cada diseño lineal, utilice el parámetro layout_weight . Puede reasignar este código para lograr este cambio de ponderación "dinámico". Aquí encontrará una gran cantidad de ejemplos capaces de Google de cómo lograr los diseños de peso en código …

Utilice RelativeLayout :

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <LinearLayout android:id="@+id/layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > </LinearLayout> <android.support.v4.view.ViewPager android:id="@+id/pager" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_below="@+id/layout" > </android.support.v4.view.ViewPager> </RelativeLayout> 
  • Implementación del transformador de página de alejamiento de Android para un ViewFlipper
  • Edittext obtiene automáticamente el foco cuando se mueve entre páginas en un paginador de vista
  • Tratamiento de fragmento y ver paginador: no se puede cambiar la etiqueta de fragmento AND Entrada recursiva para ejecutarPendingTransactions
  • Desaparición de los botones de la barra de acción al pasar entre fragmentos
  • No se puede establecer la propiedad en un fragmento con varias instancias
  • Onclick en paginador de vista en android no funciona en mi código
  • ¿Cómo actualizar el contenido de ViewPager?
  • Cómo ir a la siguiente actividad después de ViewPager en android?
  • Desplazamiento no funciona en android ViewPager con FragmentPagerAdapter
  • Adaptador ViewPager de Android: force getPageWidth cada vez
  • Hay una manera de cargar una imagen predeterminada en picasso
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.