¿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".

  • El azulejo estirable a veces estira
  • Lectura de un archivo .xml desde sdcard
  • Diseño responsable para todos los dispositivos Android
  • Mapbox infla la vista en el fragmento
  • Pregunta la ayuda sobre el problema de lectura de AndroidManifest.xml
  • Tiene algunos problemas con el archivo xml. Androide. Eclipse. Error: Invalid start tag PreferenceScreen
  • Creación de un menú de diálogo emergente personalizado
  • Corregir Error en styles.xml para generar R.java: Ningún recurso encontrado nombre 'Theme.AppCompat.Light'
  • ¿Cómo puedo utilizar las operaciones lógicas en el enlace de datos de Android?
  • Error Button textColor y drawablePadding en pre-Lollipop usando Appcompat
  • ¿Por qué no es posible usar mayúsculas en los recursos de nombres en android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.