5

我试图在垂直方向的LinearLayout内编程添加ImageView。我的布局文件是描述为下面的XML:如何以编程方式在LinearLayout中添加ImageView而无需额外空格?

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

有没有办法不添加此额外的空间?

+0

您应该将LinearLayout缓存在For循环之外以提高性能。 – Subby 2015-01-06 21:14:45

回答

3

我认为你是加载在图像视图图像可能对顶部和底部,以及其他假设您加载图像在imageview的一些额外的空间,以不同的分辨率屏幕大小和ImageView的的设置scaleType如果是这种情况,请尝试使用以下方式固定图像视图的高度,并将scaleType设置为fixXY。

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

没有像'add'这样的方法;发布一些答案之前,你应该知道你说什么。 – 2013-02-21 19:25:33

0

当ImageView构建完成后,图像宽于屏幕尺寸时会发生这种情况。 Android会将图像的尺寸缩小为纵横比,但不会先移除其周围的分配空间。

要获得更清晰的修补程序,请在imageLoader后尝试this code

相关问题