Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Dimensión de ViewPager de Android

¿El ViewPager tiene que ser el único objeto presente dentro del diseño de la actividad? Estoy tratando de implementar algo como esto:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/reader_layout" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <android.support.v4.view.ViewPager android:id="@+id/page_viewer" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Gallery android:id="@+id/miniatures_gallery" android:layout_width="match_parent" android:layout_height="wrap_content" /></LinearLayout> 

¿Dónde debo tener un gran paginador de desplazamiento en la parte superior (y lo tengo) y una galería más pequeña de desplazamiento en virtud de que. Esto me muestra sólo el buscapersonas y no la galería. ¿Cualquier sugerencia?

  • Insertar separador entre view-pager
  • ViewPager no siempre actualiza cuando se llama a setAdapter, FragmentStatePagerAdapter
  • Loader entrega el resultado al fragmento incorrecto
  • Cómo hacer deslizar el deslizador en un paginador de vista en android
  • Custom ArrayAdapter en un ListFragment
  • Lazy cargando ViewPagers en un ScrollView
  • FragmentPagerAdapter Deslizar para mostrar ListView 1/3 Anchura de la pantalla
  • Android: ¿cuál es mejor, viewpager, galería, vista de desplazamiento horizontal ... o?
  • 3 Solutions collect form web for “Dimensión de ViewPager de Android”

    ViewPager no admite wrap_content ya que (normalmente) nunca tiene todos sus hijos cargados al mismo tiempo, y por lo tanto no puede obtener un tamaño adecuado (la opción sería tener un paginador que cambia de tamaño cada vez que cambió de página).

    Sin embargo, puede establecer una dimensión precisa (por ejemplo, 150dp) y match_parent funciona también.
    También puede modificar las dimensiones dinámicamente de su código cambiando el atributo height en su LayoutParams .

    Asignar peso de diseño para ver paginador como 1 & height = 0dp en lugar de wrap_content

     <android.support.v4.view.ViewPager android:id="@+id/page_viewer" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"/> 

    Resolví el problema con un par de hacks. Esto es lo que implica:

    En primer lugar, necesitaba un diseño que ignoraría el límite de altura de ViewPager . Se utilizó como un diseño padre para los elementos de ViewPager .

     public class TallLinearLayout extends LinearLayout { public TallLinearLayout(Context context) { super(context); } public TallLinearLayout(Context context, AttributeSet attrs) { super(context, attrs); } public TallLinearLayout(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, MeasureSpec.UNSPECIFIED); } } 

    Luego escribí la lógica para cambiar el tamaño de ViewPager:

     private class ViewPagerContentWrapper implements OnGlobalLayoutListener { private ViewPager mViewPager; public ViewPagerContentWrapper(ViewPager viewPager) { mViewPager = viewPager; } @Override public void onGlobalLayout() { int position = mViewPager.getCurrentItem(); check(position); check(position + 1); } private void check(int position) { ViewGroup vg = (ViewGroup) mViewPager.getChildAt(position); View v = vg == null ? null : vg.getChildAt(0); if (v != null) { int height = v.getHeight(); if (height > mViewPager.getHeight()) { resize(height); } } } private void resize(int height) { mViewPager.setLayoutParams( new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, height ) ); } } 

    Que me registré como oyente de disposición global:

     viewPager.getViewTreeObserver().addOnGlobalLayoutListener(new ViewPagerContentWrapper(viewPager)); 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.