Ich versuche, dynamisch mehrere RelativeLayouts in einem LinearLayout hinzuzufügen, das sich in einem RelativeLayout innerhalb einer ScrollView befindet. Wenn die Gesamthöhe aller Ansichten die Größe des Telefonbildschirms überschreitet, werden alle Ansichten korrekt angezeigt. Wenn jedoch die Gesamtgröße dynamisch hinzugefügter Ansichten nicht ausreicht, um den Bildschirm zu füllen, wird nur das erste RelativeLayout-Element angezeigt, und die anderen werden nicht auf dem Bildschirm angezeigt. Ich bin wirklich hoffnungslos und verstehe nicht warum. HierDynamisches Hinzufügen von Ansichten zu RelativeLayout in ScrollView
ist der Code dynamisch Ansichten innerhalb linearen Layout zu füllen:
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);
}
Hier ist 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>
Und hier ist die XML-Datei für diese Aktivität:
<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>
Und die Screenshots:
Ohne ausreichende Layouts: (FALSCH, muss noch 3 Kommentare zeigen)
Mit genügend Layouts: (richtige, Bildschirm gefüllt ist)
I müssen nur alle drei Kommentare im ersten Fall zeigen:/Vielen Dank im Voraus.
Warum nicht ein ListView mit einer Kopfzeile und einer Fußzeile verwenden? –
Eigentlich habe ich eigentlich viele andere Ansichten über denen, die wie eine Liste aussehen: mehrere Bildansichten, Buttons usw. also ist das kein gewöhnlicher Fall aber ich muss diese Situation auch lösen, weil ich mich nicht auf die Tatsache verlassen kann, dass jeder Die andere Ansicht in dieser Aktivität wird initialisiert. irgendwelche Gedanken? – ecem