我正在使用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();
以下是问题的截图:
加载的图像应与占位符图像的大小相同。
任何想法,为什么加载图像可能会搞砸图像视图的大小?
编辑:向下缩放实际上工作正常,它的缩放比例被搞砸了。例如,在较小的屏幕上,图像大小正确。
答案 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;