¿Volver a calcular ScrollView en diferentes vistas de ViewFlipper?

Tengo un ScrolLView que envuelve un ViewFlipper. El contenido en el ViewFlipper no es de igual altura, por lo que mi segunda pantalla tiene una barra de desplazamiento muy larga que sigue y sigue con contenido en blanco:

<ScrollView android:id="@+id/outer_scroll" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:fillViewport="true"> <ViewFlipper android:id="@+id/flipper" android:layout_width="fill_parent" android:layout_height="fill_parent"> <EditText android:id="@+id/desc" style="@style/DescriptionArea" android:layout_width="fill_parent" android:layout_height="wrap_content" android:enabled="false" android:focusableInTouchMode="false" android:background="@null" /> <LinearLayout android:id="@+id/details_root" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="10dp"> <TextView android:id="@+id/item_details" style="@style/DetailsLarge" android:textColor="#000" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="fill_parent" android:text="@string/item_details_tags" /> <TextView android:id="@+id/tags" android:layout_width="wrap_content" android:layout_height="fill_parent" android:textColor="#000" android:visibility="gone" /> </LinearLayout> </ViewFlipper> </ScrollView> 

Así, por ejemplo, el bloque EditText es muy largo, y la barra de desplazamiento lo captura todo. Me arriesgo a LinearLayout, y la barra de desplazamiento continúa más allá del contenido de TextView. Lo necesito esencialmente para "recalcular" la altura de la vista.

Además, el ajuste de EditText y LinearLayout dentro de sus propias ScrollViews no es una opción, ya que entonces el teclado virtual / suave bloquea el contenido de EditText.

Durante la medida, ViewFlipper (así como ViewSwitcher, TextSwitcher, etc. – todos los descendientes de ViewAnimator) se clasificarán de forma predeterminada según el niño más grande, incluidos los no visibles.

Establezca el indicador MeasureAllChildren como false para cambiar este comportamiento para utilizar sólo el niño visible actualmente al medir el tamaño:

 ViewFlipper flipper = (ViewFlipper)findViewById(R.id.flipper); flipper.setMeasureAllChildren(false); 

Si estás haciendo tu viewflipper en xml también podrías usar android: measureAllChildren = "false".

  • No se puede arrastrar DrawerLayout desde ListView
  • Android paquete / nombre de la clase en la disposición XML?
  • Android cómo hacer que resalte la vista cuando se hace clic?
  • Guía de diseño XML de Android
  • Cómo centrar drawableTop y texto verticalmente en el botón en Android?
  • Declaración de un elemento personalizado de la interfaz de usuario de Android con XML
  • Android Studio: Problemas de renderización
  • Cómo hacer navegación personalizada ver animaciones como ésta
  • ¿Por qué usamos xml?
  • El menú de opciones de Android no se muestra
  • Obtener atributos con estilo para el niño de la definición de estilo de los padres
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.