gridview在gridview错误的大小,替换加载占位符后

时间:2013-04-30 07:41:08

标签: android gridview universal-image-loader

我正在使用gridview,以显示2列图像。

我正在使用通用图像加载程序从数据库中获取图像,效果很好,但是一旦加载图像,并且替换了“加载图像”占位符,大小就会缩小到图像的实际大小,并且没有正确填充细胞。

占位符图像正确放大,以填充可用宽度,并包裹高度。 所有图像尺寸相同,需要按比例放大或缩小,具体取决于屏幕尺寸。

这是列表项目布局(更新后,我也有一个textview,我认为这是无关紧要的,但谁知道..):

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ImageView
        android:id="@+id/grid_gallery_item_imageView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerInParent="true"
        android:adjustViewBounds="true"
        android:scaleType="fitCenter"
        android:src="@drawable/loading_image" />

    <TextView
        android:id="@+id/grid_gallery_item_textView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/grid_gallery_item_imageView1"
        android:background="#50000000"
        android:ellipsize="end"
        android:gravity="center_vertical"
        android:maxLines="3"
        android:padding="8dp"
        android:text="Bacon ipsum."
        android:textColor="#ffffff"
        android:textSize="20sp" />

</RelativeLayout>

这是我的gridview:

 <GridView
        android:id="@+id/grid_gallery_layout_gridView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:numColumns="2"
        android:stretchMode="columnWidth">

在我的gridview适配器中,我只是使用它来加载图像:

imageLoader.displayImage("db://" + item.imageId, holder.imageView, options);

选项:

options = new DisplayImageOptions.Builder().bitmapConfig(Bitmap.Config.RGB_565).showStubImage(R.drawable.loading_image)
        .displayer(new FadeInBitmapDisplayer(Constants.GRIDVIEW_IMAGE_FADEIN_TIME)).build();

以下是问题的截图:

enter image description here

加载的图像应与占位符图像的大小相同。

任何想法,为什么加载图像可能会搞砸图像视图的大小?

编辑:向下缩放实际上工作正常,它的缩放比例被搞砸了。例如,在较小的屏幕上,图像大小正确。

2 个答案:

答案 0 :(得分:2)

似乎我已经解决了这个问题。 如果图像位于网格视图中,则显然ImageView不会正确缩放图像。

此代码非常适合我:link

答案 1 :(得分:1)

我打赌你需要

android:scaleType="centerCrop"

无需将单个ImageView放在RelativeLayout

<ImageView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/grid_gallery_item_imageView1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_centerInParent="true"
    android:adjustViewBounds="true"
    android:scaleType="centerCrop"
    android:src="@drawable/loading_image" />

^如果正确重写适配器,则不需要id属性,例如

if (convertView == null) {
    convertView = inflater.inflate(id, null);
}
imageView = (ImageView) convertView;