5

Estoy tratando de agregar ImageView programáticamente dentro de LinearLayout, que tiene orientación vertical. Mi archivo de diseño se describe como el XML siguiente:Cómo agregar programáticamente ImageView en LinearLayout sin espacios adicionales?

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

Y mi código fuente de Java que añade los ImageViews a la LinearLayout es la siguiente:

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

Lo que pasa es que antes y después de cada ImageView I Estoy consiguiendo algunos espacios adicionales que no deberían estar allí, por lo que la altura del contenedor de imágenes aumenta mucho. Una prueba que hice y obtuve el resultado esperado fue no utilizar el imageLoader y, en su lugar, establecí el ImageResource programáticamente en un archivo de imagen estática. De esta forma no obtuve ningún espacio extra.

El resultado extraño se ilustra en la siguiente imagen:

enter image description here

¿Hay una manera de no agregar este espacio extra?

+0

Debe almacenar en caché el LinearLayout fuera de For Loop para aumentar el rendimiento. – Subby

Respuesta

3

Creo imágenes que está cargando en vistas de imágenes pueden tener algún espacio extra en la parte superior e inferior, y otro supuesto que va a cargar imágenes en imageview, con diferentes resoluciones de pantalla grande, y el establecimiento de ScaleType de ImageView a centerInside, si es el caso, intente utilizar lo siguiente fijando también la altura de la vista de imagen y establezca scaleType en fixXY.

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

No existe un método como 'agregar'; antes de publicar alguna respuesta, debes saber lo que dices. –

0

Esto ocurre cuando la imagen es más ancha que el tamaño de la pantalla después de que se ha construido ImageView. Android reduce las dimensiones de la imagen de acuerdo con la relación de aspecto, pero no elimina el espacio asignado a su alrededor antes.

Para obtener una solución más limpia, intente this code después de su imageLoader.

Cuestiones relacionadas