Sto tentando di aggiungere dinamicamente diversi RelativeLayouts in un LinearLayout che si trova all'interno di RelativeLayout, che si trova all'interno di ScrollView. Quando l'altezza totale di tutte le visualizzazioni supera la dimensione dello schermo del telefono, tutte le visualizzazioni vengono visualizzate correttamente. Ma quando la dimensione totale delle viste aggiunte dinamicamente non è sufficiente per riempire lo schermo, viene mostrato solo il primo elemento RelativeLayout e gli altri non vengono visualizzati sullo schermo. Sono davvero senza speranza e non capisco perché.Aggiunta dinamica di viste a RelativeLayout all'interno di ScrollView
Ecco il codice per popolare dinamicamente viste all'interno di layout lineare:
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);
}
Ecco 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>
E qui è il file XML per questa attività:
<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>
E gli screenshot:
Senza layout sufficienti: (SCORRETTO, ha la necessità di mostrare 3 commenti)
Con abbastanza layout: (UN CORRETTO, lo schermo è pieno)
I solo bisogno di mostrare tutti e tre i commenti nel primo caso:/Grazie in anticipo.
Perché non utilizzare un ListView con un'intestazione e un piè di pagina? –
in realtà ho molte altre viste sopra quelle che assomigliano a un elenco: diverse immagini, pulsanti, ecc. Quindi non è un caso comune, ma ho bisogno di risolvere anche questa situazione, perché non posso fare affidamento sul fatto che ogni l'altra vista in questa attività verrà inizializzata. qualche idea? – ecem