Próbuję dodać dynamicznie utworzone kilka RelativeLayouts do LinearLayout, który jest wewnątrz RelativeLayout, który jest wewnątrz ScrollView. Gdy całkowita wysokość wszystkich widoków przekracza rozmiar ekranu telefonu, wszystkie widoki są wyświetlane poprawnie. Ale gdy całkowity rozmiar dynamicznie dodawanych widoków nie wystarcza do wypełnienia ekranu, wyświetlany jest tylko pierwszy element RelativeLayout, a pozostałe nie są wyświetlane na ekranie. Jestem naprawdę beznadziejna i nie rozumiem, dlaczego.Dynamiczne dodawanie widoków do RelativeLayout wewnątrz ScrollView
Oto kod dynamicznie zapełnić widoki wewnątrz układu liniowego:
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);
}
Oto 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>
I tu jest plik xml dla tej działalności:
<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>
Zrzuty ekranu:
Bez odpowiednich układów: (nieprawidłowa, musi pokazać 3 komentarzy)
z dość układów: (prawidłowa, ekran jest wypełniony)
I wystarczy pokazać wszystkie trzy komentarze w pierwszym przypadku:/Z góry dziękuję.
Dlaczego nie używać ListView z nagłówkiem i stopką? –
Tak naprawdę normalnie mam wiele innych widoków nad tymi, które wyglądają jak lista: kilka widoków obrazu, przycisków itp., Więc nie jest to częsty przypadek, ale muszę też rozwiązać tę sytuację, ponieważ nie mogę polegać na tym, że każdy inny widok w tym działaniu zostanie zainicjowany. jakieś pomysły? – ecem