8

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)

Incorrect one

Con abbastanza layout: (UN CORRETTO, lo schermo è pieno)

correct one

I solo bisogno di mostrare tutti e tre i commenti nel primo caso:/Grazie in anticipo.

+0

Perché non utilizzare un ListView con un'intestazione e un piè di pagina? –

+0

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

risposta

0

invece di fill_parent, provare a cambiare il layout_height del <RelativeLayout> del vostro list_item_comment.xml-wrap_content.

Inoltre, perché hai bisogno di un altro <RelativeLayout> all'interno del tuo <ScrollView> del xml della tua attività. LinearLayout è sufficiente per eseguire l'attività desiderata. Forse puoi semplicemente rimuoverlo.

+0

Ho provato il tuo suggerimento ma non sembra risolvere il problema:/In realtà questo non è un caso comune della mia attività, normalmente ci devono essere 2 immagini, un pulsante, parecchie visioni di testo ecc. Pertanto relativelayout facilita il mio lavoro. Ma anche questo è un caso (anche se è raro), quindi dovrei trovare una soluzione:/ – ecem

+0

@ecem, sei riuscito a trovare una soluzione per questo? – WindsurferOak

Problemi correlati