Ajout dynamique de vues à RelativeLayout à l'intérieur de ScrollView

J'essaie d'ajouter plusieurs RelativeLayouts créés dynamiquement dans un LinearLayout qui se trouve à l'intérieur d'un RelativeLayout, qui se trouve dans une ScrollView. Lorsque la hauteur totale de toutes les vues dépasse la taille de l'écran du téléphone, toutes les vues sont affichées correctement. Mais lorsque la taille totale des vues ajoutées dynamiquement n'est pas suffisante pour remplir l'écran, seul le premier élément RelativeLayout est affiché et les autres ne s'affichent pas dans l'écran. Je suis vraiment désespéré et je ne comprends pas pourquoi.

Voici le code pour localiser dynamiquement les vues dans la disposition linéaire:

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); } 

Voici 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> 

Et voici le fichier xml pour cette activité:

 <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> 

Et les captures d'écran:

Sans mises en page suffisantes: (INCORRECT, doit montrer 3 commentaires)

Incorrect

Avec assez de mises en page: (CORRECT, UN, l'écran est rempli)

corriger un

Je dois simplement montrer les trois commentaires dans le premier cas: / Merci d'avance.

One Solution collect form web for “Ajout dynamique de vues à RelativeLayout à l'intérieur de ScrollView”

Au lieu de fill_parent , essayez de modifier le layout_height du <RelativeLayout> de votre list_item_comment.xml pour wrap_content .

De plus, pourquoi avez-vous besoin d'un autre <RelativeLayout> dans votre <ScrollView> du xml de votre activité. Le LinearLayout suffit pour faire ce que vous voulez que votre activité ressemble. Peut-être que vous pouvez l'enlever.

coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.