如何在GridView中以正常大小显示一组图像

时间:2012-09-28 14:54:07

标签: android gridview imageview

如果我有相同大小的211px x 165px的图像集,如何使用网格视图显示它们,同时保持高度和宽度之间的原始比率。需要在每行显示两个项目。我已经可以做到这一点,但图像看起来垂直拉伸。 这是我得到的截图。请注意gridview单元格大于图像 enter image description here

gridview布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/bg"
    android:orientation="vertical" >

    <include
        android:id="@+id/include1"
        layout="@layout/header" />
    <GridView
        android:id="@+id/gvCategory"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="0dp"
        android:background="@drawable/bg"
        android:gravity="right"
        android:horizontalSpacing="5dp"
        android:numColumns="2"
        android:padding="0dp"
        android:verticalSpacing="5dp" >
    </GridView>

</LinearLayout>

gridview单元格布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/include21nh"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >

    <FrameLayout
        android:id="@+id/include21"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/btn"
        android:padding="5dp" >

        <ImageView
            android:id="@+id/imgCategoryImage"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:scaleType="centerInside"
            android:src="@drawable/img1" />

        <TextView
            android:id="@+id/txtCategoryName"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:layout_gravity="bottom"
            android:background="@drawable/transparent_fading"
            android:gravity="right"
            android:padding="15dp"
            android:text="Crispy Chicken and Sandwich"
            android:textColor="#ffffff"
            android:textSize="17sp" />

    </FrameLayout>

</LinearLayout>

1 个答案:

答案 0 :(得分:1)

您应该在代表android:scaleType="centerInside"中的项目的ImageView内使用GridView属性。正如文档所说:

  

CENTER_INSIDE - 均匀缩放图像(保持图像的外观   比率),以便图像的尺寸(宽度和高度)都是   等于或小于视图的相应尺寸(减去   填充)。

您可以找到更多信息here。希望这会有所帮助。