GridView中的矩形图像

时间:2012-08-23 08:35:59

标签: android android-layout android-xml

如何创建一个GirdView,其中的图像是矩形(120 x 58.5),这将导致非方形单元格?目前,如果我有这种XML布局,图像上方和下方都有空白,因为单元格为120 x 120.每个单元格的宽度应为120,高度为58.

<GridView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/AppsOverviewGrid"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
    android:columnWidth="120dp"
    android:numColumns="auto_fit"
    android:verticalSpacing="0dp"
    android:horizontalSpacing="8dp"
    android:stretchMode="columnWidth"
    android:gravity="center">
</GridView>

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

在我看来,理想的解决方案是为gridview布局中的项创建布局文件,您可以在其中指定图像的高度(使用ImageView)。然后,您可以使用带有LayoutInflater的自定义适配器将网格视图项目与主布局连接。

这是一个很棒的教程(2.示例):http://www.mkyong.com/android/android-gridview-example/

答案 1 :(得分:0)

最简单的方法就是在适配器中设置imageview的宽度和高度。

public class ImageAdapter extends BaseAdapter {

 // create a new ImageView for each item referenced by the Adapter
    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView imageView;
        if (convertView == null) {
            // if it's not recycled, initialize some attributes
            imageView = new ImageView(mContext);
            imageView.setLayoutParams(new GridView.LayoutParams(120, 58));
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            imageView.setPadding(8, 8, 8, 8);
        } else {
            imageView = (ImageView) convertView;
        }

        imageView.setImageResource(pictureArray[position]);

        return imageView;
    }

   // references to our images
    private Integer[] pictureArray= {
            R.drawable.pic1, R.drawable.pic2,
     }

}

然后将适配器设置为gridview。

 GridView gridview = (GridView) findViewById(R.id.gridview);
    gridview.setAdapter(new ImageAdapter(this));