在使用imageView时,gridView高度太高

时间:2012-09-11 05:10:41

标签: android android-imageview android-gridview

我遇到了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 400px)时,单元格的高度变得非常高(大约是宽度的两倍,请注意我将网格设置为使用2列)。但是,当我将图像保存为较小的尺寸(例如,160 x 160px)时,gridView正确显示。高度和宽度匹配。

以下是截图:

enter image description here

似乎有什么问题?可能是大图像导致gridView错误地计算其单元格的高度?我该怎么做才能解决这个问题?

4 个答案:

答案 0 :(得分:17)

我认为你没有将adjustViewBounds设置为true。你能设置如下吗?

imageView.setAdjustViewBounds(true);

答案 1 :(得分: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);

希望对你有用。

答案 2 :(得分:0)

使用wrap_content代替fill_parent

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

答案 3 :(得分:0)

尝试以下代码。宽度应该是逢低

 android:adjustViewBounds="true"
 android:maxWidth="150dip"
 android:maxHeight="150dip"