2012-08-23 76 views
2

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

<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

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

以下是一个(例如2)一个大的教程:http://www.mkyong.com/android/android-gridview-example/

+0

谢谢!一些试验和错误我得到了我想要的东西。 – Caroline

+0

非常欢迎。很高兴看到我的回答很有帮助。 –

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, 
    } 

} 

然后将Adapter设置为gridview。

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