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


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?

  • Utilizando un color personalizado para el fondo del botón mientras se utiliza el atributo selectableItemBackground
  • ScrollView no se desplaza hasta el final del margen inferior del LinearLayout interno
  • Android: Cómo crear pestañas como las que aparecen en la página de la interfaz de usuario de Android
  • Java.lang.IllegalStateException: ScrollView puede alojar sólo un hijo directo
  • ¿Cuál es la diferencia entre el inicio / fin de margen de Android y la derecha / izquierda?
  • Anular la disposición xml del marco de android
  • Usar layout_gravity = "bottom" para colocar en la parte inferior de LinearLayout
  • Android Hello GridView Tutorial no mostrará imágenes
  • 5 Solutions collect form web for “LinearLayout no se expande dentro de ScrollView”

    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

    .

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.