Как программно добавить ImageView в LinearLayout без лишних пробелов? - PullRequest
5 голосов
/ 29 декабря 2011

Я пытаюсь добавить ImageView программно в LinearLayout, который имеет вертикальную ориентацию. Мой файл макета описывается как XML ниже:

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

А мой исходный код Java, который добавляет ImageViews к LinearLayout, выглядит следующим образом:

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

Что происходит, так это то, что до и после каждого ImageView у меня появляются дополнительные пробелы, которых там быть не должно, поэтому высота контейнера изображений значительно увеличивается. Один тест, который я сделал и получил ожидаемый результат, заключался в том, чтобы не использовать imageLoader, а вместо этого я программно установил ImageResource в статический файл изображения. Таким образом, у меня не было дополнительного места.

Странный результат показан на рисунке ниже:

enter image description here

Есть ли способ не добавлять это дополнительное пространство?

Ответы [ 3 ]

3 голосов
/ 07 января 2012

Я думаю, изображения, которые вы загружаете в представлениях изображений, могут иметь некоторый дополнительный интервал сверху и снизу, и другое предположение, что вы загружаете изображения в режиме просмотра изображений с разрешением, отличным от размера экрана, и устанавливаете scaleType для ImageView в centerInside, еслив этом случае попробуйте использовать следующее, зафиксировав высоту вида изображения, и установите для scaleType fixXY.

0 голосов
/ 07 ноября 2012

Это происходит, когда изображение шире размера экрана после построения ImageView. Android сжимает размеры изображения в соответствии с соотношением сторон, но не удаляет выделенное пространство вокруг него раньше.

Для более четкого исправления попробуйте этот код после вашего imageLoader.

0 голосов
/ 29 декабря 2011
  ((LinearLayout)findViewById(R.id.resource)).add(img);
...