5

Sto cercando di aggiungere ImageView in modo programmatico all'interno di un LinearLayout, che ha l'orientamento verticale. Il mio file di layout è descritto come il xml di seguito:Come aggiungere a livello di codice ImageView in LinearLayout senza spazi aggiuntivi?

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:paddingTop="5dip" 
    android:id="@+id/mainView""> 

    <TextView android:id="@+id/tvTituloInformacao" 
    android:layout_width="fill_parent"   
    android:layout_height="wrap_content" 
    android:textSize="20sp" 
    android:textStyle="bold" 
    android:textColor="@color/white" 
    android:gravity="center_horizontal" 
    android:shadowColor="@color/black_translucent" 
    android:shadowDx="2.0" 
    android:shadowDy="2.0" 
    android:shadowRadius="3.0" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentLeft="true" /> 

    <LinearLayout android:id="@+id/resourceContainer" 
    android:layout_width="fill_parent"   
    android:layout_height="wrap_content" 
    android:layout_marginTop="5dip" 
    android:layout_marginLeft="10dip" 
    android:layout_marginRight="10dip" 
    android:layout_marginBottom="10dip" 
    android:padding="3dip" 
    android:orientation="vertical" 
    android:gravity="center_horizontal" 
    android:layout_below="@+id/tvTituloInformacao" 
    android:background="@color/black_translucent2" /> 

</RelativeLayout> 

E il mio codice sorgente Java che aggiunge le ImageViews al LinearLayout è la seguente:

for(Resource r : mUser.getPictures()) { 
    ImageView img = new ImageView(this); 
    img.setVisibility(View.VISIBLE); 
    img.setTag(r.getThumb60()); 
    imageLoader.DisplayImage(r.getThumb60(), this, img); 
    ((LinearLayout) tempFotosView.findViewById(R.id.resourceContainer)).addView(img); 
} 

Quello che succede è che prima e dopo ogni ImageView I sto ottenendo degli spazi extra che non dovrebbero essere lì, quindi l'altezza del contenitore delle immagini aumenta molto. Un test che ho fatto e ottenuto il risultato previsto non era quello di usare imageLoader e invece ho impostato ImageResource in modo programmatico su un file immagine statico. In questo modo non ho avuto spazio extra.

Il risultato bizzarro è illustrato nell'immagine qui sotto:

enter image description here

C'è un modo per non aggiungere questo spazio?

+0

È consigliabile memorizzare nella cache il LinearLayout al di fuori del ciclo For per aumentare le prestazioni. – Subby

risposta

3

penso che le immagini si caricano in vista di immagine potrebbero avere qualche spaziatura extra sulla parte superiore e inferiore, e altre ipotesi che si sta caricando le immagini in imageview, con una risoluzione diversa da quella dello schermo a grandezza naturale, e l'impostazione scaleType di ImageView per centreInside, se è il caso, per favore prova a usare il seguente fissando l'altezza della vista dell'immagine, e imposta scaleType su fixXY.

-2
((LinearLayout)findViewById(R.id.resource)).add(img); 
+4

Non esiste un metodo come 'add'; prima di postare una risposta dovresti sapere cosa dici. –

0

Ciò si verifica quando l'immagine è più larga della dimensione dello schermo dopo che ImageView è stato creato. Android riduce le dimensioni dell'immagine in base alle proporzioni, ma non rimuove lo spazio allocato attorno ad esso in precedenza.

Per una soluzione di pulizia, prova this code dopo il tuo imageLoader.

Problemi correlati