7

我对 GridView 内的单元格的高度有疑问。我的每个单元格内部都会有一个 imageView,如下所示:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:orientation="vertical"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent">

<GridView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:verticalSpacing="10dp"
        android:horizontalSpacing="10dp"
        android:id="@+id/eventGridView" android:numColumns="2"/>
</LinearLayout>

这是每个单元格的 ImageView

<com.example.scheduling_android.view.RoundedCornerImageView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:maxWidth="150dp"
        android:maxHeight="150dp"
        xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/eventImageView"
        android:adjustViewBounds="false"/>

我正在为我的 imageView 使用不同的图像大小。我得到的是,每当我的图像变大(例如,400 x 400 像素)时,单元格的高度就会变得非常高(大约是宽度的两倍,请注意我将网格设置为使用 2 列)。但是,当我将图像保存为较小尺寸(例如 160 x 160 像素)时,gridView 会正确显示。高度和宽度匹配。

这是一个屏幕截图:

在此处输入图像描述

似乎是什么问题?难道是大图像导致gridView错误地计算其单元格的高度?我能做些什么来解决这个问题?

4

4 回答 4

19

我认为您尚未将adjustViewBounds 设置为true。可以设置如下吗?

imageView.setAdjustViewBounds(true);
于 2014-06-17T15:24:08.520 回答
2

在这里,我每行都有用户 3 列,它工作正常。图库视图在运行时设置列宽,

mPhotoGalleryGridView.setColumnWidth(display.getWidth() / 3);

在布局中

<GridView android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/photogallerygridview"      
    android:padding="5dp"
    android:verticalSpacing="5dp"
    android:horizontalSpacing="5dp"
    android:stretchMode="columnWidth"
    android:numColumns="3"
    android:gravity="center">    
</GridView>

在适配器中:设置 imageview 的高度和宽度,

imageview.setMaxHeight(150);
        imageview.setMinimumHeight(150);

希望对你有用。

于 2012-09-11T05:23:08.230 回答
0

试试下面的代码。宽度应该是倾斜的

 android:adjustViewBounds="true"
 android:maxWidth="150dip"
 android:maxHeight="150dip"
于 2012-09-11T06:10:25.433 回答
0

使用wrap_content而不是使用fill_parent.

因为 fill_parent 实际上会取图像的原始高度并尝试将其填充到屏幕中。即使您使用 400x400 图像并设置 layout_width = "160dp"layout_height = "160dp",它也会起作用,因为我们不允许图像显示更多。

于 2012-09-11T05:15:44.987 回答