2010-01-09 12 views
29

He tenido una serie de problemas con ScrollViews. Recientemente traté de crear un LinearView cuyo contenido exceda el tamaño de la pantalla, así que creé el nuevo diseño con el elemento padre ScrollView y establecí su ancho y alto en valores personalizados (el diseño debe aparecer como un diálogo, sin llenar toda la pantalla).Android: Problema ScrollView

Cuando se selecciona el elemento, el borde rojo parece abarcar el rectángulo predefinido ScrollView LayoutWidth y LayoutHeight que está bien. Luego coloqué dentro de LinearView y establecí los valores de LayoutWidth y LayoutHeight en fill_parent.

Luego, cuando comencé a agregar los elementos en LinearLayout, el borde (lil rojo) envolvió los elementos insertados, no el ScrollView principal.

Así que cuando el contenido de LinearLayout (secundario de ScrollView) excedió el tamaño de ScrollView principal, el desplazamiento no apareció y los elementos inferiores son simplemente invisibles.

De todos modos ... en ese caso el contenido XML era demasiado extenso para publicar la pregunta aquí y ahora estoy teniendo el mismo problema con el ejemplo más simple.

La siguiente parte del diseño está destinada a ser un EditText desplazable (en caso de que la entrada del usuario exceda el tamaño principal del widget). Quería establecer la altura de EditText en 120px, por lo que establecí la altura de ScrollView de 120px y el EditText de niño como fill_parent. De nuevo en este caso el EditarTexto no llena toda la zona ScrollView sino una sola línea:

<ScrollView android:layout_height="120px" android:layout_width="fill_parent"> 
<EditText android:id="@+id/txtContent" android:layout_height="fill_parent" android:layout_width="fill_parent" android:text="TestContent"> 
</EditText> 
</ScrollView> 

¿Alguien sabe cómo modificar el contenido por encima de lo que el EditarTexto llena el control de los padres y en caso de entrada del usuario supera el tamaño de control aparece el desplazamiento?

Gracias!

Editar:

A continuación se presentan las capturas de pantalla de la disposición

eliminado ImageShack vínculo roto
eliminado ImageShack vínculo roto

Respuesta

95

Su EditarTexto debe tener una altura de wrap_content. fill_parent no tiene significado en un ScrollView. Si desea que EditText llene su ScrollView cuando su contenido es menor que ScrollView, use android:fillViewport="true" en el ScrollView.

+0

Pero con '' ScrollView' tener androide: fillViewport = "true" 'crear un extraño problema para mí. En fragmento hay una vista de desplazamiento y dentro de ella hay un diseño de tabla con filas de tabla creadas dinámicamente en el tiempo de ejecución. Después de eso, si el banner publicitario se carga y hago visible, por lo tanto, debido al cambio en el tamaño del fragmento, las filas de mi tabla hija desaparecen. ¡Esto no sucede si configuro fillViewPort en falso! –

9

Sí, como dijo Romain, scrollview necesita el siguiente combo.

  1. para ScrollView android:fillViewport="true"
  2. disponible para niños ScrollView android:layout_height="wrap_content"
+1

Sí. Hubo ocasiones en que obtuve un comportamiento extraño cuando lo configuré en fill_parent. –

+0

Hice lo mismo, pero entonces no puedo desplazarme? ¿Me pueden ayudar a tratar de entender cuál podría ser el problema? –

Cuestiones relacionadas