8

Estoy intentando agregar dinámicamente varios RelativeLayouts creados en LinearLayout, que está dentro de RelativeLayout, que está dentro de ScrollView. Cuando la altura total de todas las vistas supera el tamaño de la pantalla del teléfono, todas las vistas se muestran correctamente. Pero cuando el tamaño total de las vistas añadidas dinámicamente no es suficiente para llenar la pantalla, solo se muestra el primer elemento RelativeLayout y las demás no se muestran en la pantalla. Realmente no tengo esperanza y no entiendo por qué.Adición dinámica de vistas a RelativeLayout dentro de ScrollView

Aquí está el código para rellenar dinámicamente puntos de vista dentro de la disposición lineal:

LinearLayout commentsLayout = (LinearLayout) findViewById(R.id.comments_layout); 

LayoutInflater inflater = (LayoutInflater) 
    this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

for(Comment c: commentsList) { 

    RelativeLayout layoutItem = (RelativeLayout) inflater.inflate(
     R.layout.list_item_comment, null, false); 

     TextView tv = (TextView) layoutItem.findViewById(R.id.textView); 
     ImageView iv = (ImageView) layoutItem.findViewById(R.id.imageView); 

     // set tv's text 
     // set iv's image and onclicklistener, nothing fancy here, everything goes well 

     commentsLayout.addView(layoutItem); 
} 

Aquí es list_item_comment.xml:

<RelativeLayout 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:background="@color/white" 
> 
    <ImageView 
    android:id="@+id/imageView" 
    android:layout_width="50dip" 
    android:layout_height="50dip" 
    android:layout_alignParentLeft="true" 
    android:layout_marginTop="10dp" 
    android:layout_marginLeft="10dp" 
    /> 

    <TextView 
    android:id="@+id/textView" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_margin="10dp" 
    android:textSize="16sp" 
    android:layout_toRightOf="@id/imageView" 
    /> 
</RelativeLayout> 

Y aquí está el archivo XML para esta actividad:

<RelativeLayout 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:id="@+id/main_layout" 
> 
... 

    <ScrollView 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:fillViewport="true" 
    android:id="@+id/scrollView" 
    > 

     <RelativeLayout 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:id="@+id/relativeContainer" 
     > 

     ... 

      <LinearLayout 
      android:orientation="vertical" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:id="@+id/comments_layout" 
      /> 

     </RelativeLayout> 

    </ScrollView> 

</RelativeLayout> 

Y las capturas de pantalla:

Sin suficientes diseños: (incorrecto, tiene que mostrar 3 comentarios)

Incorrect one

Con suficientes diseños:

correct one

I (, la pantalla se llena CORRECTA) solo necesito mostrar los tres comentarios en el primer caso:/Gracias de antemano.

+0

¿Por qué no utilizar un ListView con un encabezado y un pie de página? –

+0

en realidad, tengo muchas otras vistas por encima de las que parecen una lista: varias imágenes, botones, etc. por lo que este no es un caso común, pero también necesito resolver esta situación, porque no puedo confiar en el hecho de que cada otra vista en esta actividad se inicializará. ¿Alguna idea? – ecem

Respuesta

0

en lugar de fill_parent, intente cambiar el layout_height del <RelativeLayout> de su list_item_comment.xml-wrap_content.

Además, ¿por qué necesita otra <RelativeLayout> dentro de su <ScrollView> del xml de su actividad. El LinearLayout es suficiente para hacer lo que desea que su actividad se vea. Tal vez solo puedas eliminarlo.

+0

Intenté su sugerencia, pero parece que no resuelve el problema:/Realmente este no es un caso común de mi actividad, normalmente debe haber una 2 vistas de imagen, un botón, varias vistas de texto, etc. por lo tanto, relativelayout facilita mi trabajo. Pero este también es un caso (aunque es raro), por lo tanto, debería encontrar una solución:/ – ecem

+0

@ecem, ¿Pudieron encontrar una solución para esto? – WindsurferOak

Cuestiones relacionadas