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)
Con suficientes diseños:
I (, la pantalla se llena CORRECTA) solo necesito mostrar los tres comentarios en el primer caso:/Gracias de antemano.
¿Por qué no utilizar un ListView con un encabezado y un pie de página? –
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