如何在没有额外空格的情况下以编程方式在LinearLayout中添加ImageView?

时间:2011-12-29 12:03:35

标签: android android-layout android-linearlayout android-imageview

我正在尝试以编程方式在具有垂直方向的LinearLayout中添加ImageView。我的布局文件被描述为下面的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>

我将ImageViews添加到LinearLayout的java源代码如下:

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 个答案:

答案 0 :(得分:3)

我认为您在图像视图中加载的图像可能在顶部和底部有一些额外的间距,而其他假设您在图像视图中加载图像,分辨率不同于屏幕尺寸,并将ImageView的scaleType设置为centerInside,如果在这种情况下,请尝试使用以下方法固定图像视图的高度,并将scaleType设置为fixXY。

答案 1 :(得分:0)

在构建ImageView后,图像宽度大于屏幕大小时会发生这种情况。 Android会根据宽高比缩小图像的尺寸,但不会在之前删除周围的分配空间。

要获得更清晰的解决方法,请在imageLoader之后尝试this code

答案 2 :(得分:-2)

  ((LinearLayout)findViewById(R.id.resource)).add(img);