LinearLayout no se expande dentro de ScrollView

Tengo un LinearLayout dentro de un ScrollView que tiene android:layout_height="fill_parent" , pero no se expande a la altura completa del ScrollView . Mi diseño se parece a:

 level layout layout_width layout_height 1 LinearLayout fill_parent fill_parent 2 LinearLayout fill_parent wrap_content 3 (some irrelevant stuff) 2 ScrollView fill_parent fill_parent <-- this expands full height 3 LinearLayout fill_parent fill_parent <-- this does not (has orientation=vertical) (following stuff probably are irrelevant, but just to be sure:) 4 TextView fill_parent fill_parent 4 LinearLayout fill_parent wrap_content 

Puedo ver que el LinearLayout no amplía la altura completa del ScrollView porque en Eclipse en Android Layout Editor , si selecciono ScrollView (en el panel Esquema) se resalta con un borde rojo que llena la pantalla al fondo pero Cuando selecciono LinearLayout su resaltado no se expande a la parte inferior de la pantalla. ¿Cómo puedo conseguir que lo haga?

El efecto que estoy tratando de lograr es tener algún texto y un botón debajo de él (dentro del LinearLayout en el nivel 4 hay sólo un botón). El texto puede ser lo suficientemente grande como para necesitar una barra de desplazamiento, en cuyo caso quiero que el usuario tenga que desplazarse hacia abajo para ver el botón. En caso de que el texto no sea lo suficientemente grande para una barra de desplazamiento, quiero que el LinearLayout contiene el botón se adhiera a la parte inferior de la pantalla.

Al principio pensé que no debía publicar el XML completo porque generalmente es un turn-down para ver un gran trozo de código en una pregunta. Sin embargo, parece que podría ser necesario, así que aquí está el diseño completo.

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android"> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:id="@+id/video_layout" android:focusable="true" style="@style/VideoLayout"> <FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:foreground="@android:drawable/ic_media_play" android:foregroundGravity="center"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/video_thumb" android:padding="5dip" android:background="#454545"/> </FrameLayout> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:focusable="true" style="@style/VideoTitle" android:id="@+id/video_title" android:layout_gravity="center" android:layout_weight="1"/> </LinearLayout> <ScrollView android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1"> <!-- this ScrollView expands the full height of the screen. However, the next LinearLayout does not expand the full height of the ScrollView --> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1" android:layout_gravity="fill" android:orientation="vertical" android:id="@+id/info_layout"> <TextView android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/info_body" style="@style/InfoText"/> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" style="@android:style/ButtonBar"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_weight="1" android:text="@string/button_readmore" android:id="@+id/btn_read_more"/> </LinearLayout> </LinearLayout> </ScrollView> </LinearLayout> 

En este momento he recurrido a android:layout_gravity="bottom" en la problemática LinearLayout , que hace que el botón se adhiera a la parte inferior de la pantalla, LinearLayout que LinearLayout . Pero eso también hace que el texto se adhiera a la parte inferior de la pantalla, que no es exactamente lo que buscaba.

Actualización: cero que, android:layout_gravity="bottom" hace que el ScrollView no pueda, así, desplazarse. ¿Otras ideas?

Encontré la solución al final. El problema no era con el LinearLayout , sino con el ScrollView (parece extraño, teniendo en cuenta el hecho de que el ScrollView estaba expandiendo, mientras que el LinearLayout no lo era).

La solución era usar android:fillViewport="true" en el ScrollView .

Sé que este post es muy antiguo, para aquellos que no quieren usar android:fillViewport="true" porque a veces no abre el edittext encima del teclado. Utilice el diseño relativo en lugar de LinearLayout que resuelve el propósito.

¿Puede proporcionar su xml de diseño? Hacerlo permitiría a la gente recrear el problema con un esfuerzo mínimo.

Puede que tenga que configurar

 android:layout_weight="1" 

Para el elemento que desea expandir

He utilizado dinámicamente para conseguir esto. Tengo un LinearLayout y dentro de este ScrollView usado como un niño. Entonces tomo de nuevo LinearLayout y agrego lo que alguna vez vea u quiere a este LinearLayout y luego este LinearLayout agrega a ScrollView y finalmente agrega este ScrollView a LinearLayout. Entonces u puede conseguir el desplazamiento en el ScrollView de la ur y nada dejará a visible.

LinearLayout (Parent) – ScrollView (hijo de LinerLayout) – LinearLayout (hijo de ScrollView) – agrega aquí textView, botones, spinner etc lo que quieras. A continuación, agregue este LinearLyout a ScrollView. Bcoz sólo un CHILD para ScrollView aplicable y último añadir este ScrollView a LinearLyout.If área definida es superior a partir de Tamaño de pantalla entonces u obtendrá un Scroll dentro de ScrollView.

En mi caso no he dado el

Orientación de LinearLayout (Niño de ScrollView)

Así que por defecto toma horizontal, pero scrollview scrols verticalmente, así que compruebe si 'android: orientation = "vertical"' se establece en el ScrollView's Child (En el caso de LinearLayout).

Este era mi caso, espero que ayude a alguien

.

  • Qué diseño utilizar para producir un formulario de entrada de datos en android
  • EditText no escribirá en una sola línea
  • ¿Qué es alertcontroller.recyclelistview
  • Cómo obtener el número de artículo (posición) de una cadena
  • Haga clic en un elemento de la lista RecyclerView
  • Android - diseño de xml como fondo
  • Cómo configurar los parámetros de un botón mediante programación
  • Divide la pantalla por porcentaje
  • ¿Cómo hacer que Rotate3dAnimation sea más suave?
  • ¿Cómo agregar un interruptor a la barra de acción de Android?
  • Actualización dinámica de TabLayout sin cambiar la ficha seleccionada
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.