8

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)

Incorrect one

Mit genügend Layouts: (richtige, Bildschirm gefüllt ist)

correct one

I müssen nur alle drei Kommentare im ersten Fall zeigen:/Vielen Dank im Voraus.

+0

Warum nicht ein ListView mit einer Kopfzeile und einer Fußzeile verwenden? –

+0

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

Antwort

0

statt fill_parent, versuchen die layout_height der <RelativeLayout> Ihrer list_item_comment.xml-wrap_content ändern.

Auch, warum brauchen Sie eine andere <RelativeLayout> innerhalb Ihrer <ScrollView> der xml Ihrer Aktivität. Die LinearLayout reicht aus, um das zu tun, wonach Ihre Aktivität aussehen soll. Vielleicht können Sie es einfach entfernen.

+0

Ich habe Ihren Vorschlag ausprobiert, aber das scheint das Problem nicht zu lösen:/Eigentlich ist dies kein üblicher Fall meiner Tätigkeit, normalerweise muss es zwei Bilder, einen Knopf, mehrere Textansichten usw. geben. Aber das ist auch ein Fall (obwohl es selten ist), deshalb sollte ich eine Lösung finden:/ – ecem

+0

@ecem, Konnten Sie eine Lösung dafür finden? – WindsurferOak

Verwandte Themen