如何根据屏幕高度设置GridView单元格的高度?

时间:2011-02-25 17:19:38

标签: android layout gridview

在我的布局中,我只有八个单元格 我希望单元格划分屏幕上的所有可用空间。这可能吗?

这是我的gridview布局:

<GridView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/dataGrid"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10px"
    android:verticalSpacing="10px"
    android:horizontalSpacing="10px" 
    android:numColumns="2"
    android:gravity="fill" />

这是项目布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
    android:padding="6dip"  >   
  <TableRow
      android:layout_width="fill_parent"
      android:layout_height="fill_parent" >
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
      <TextView
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:textColor="#E00000"
          android:textStyle="bold"
          android:gravity="left"
          android:textSize="16dip"/>    
      <TextView
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:textColor="#000000"
          android:textStyle="normal"
          android:gravity="right"
          android:textSize="12dip"/>
    </LinearLayout>
  </TableRow>
</LinearLayout>

3 个答案:

答案 0 :(得分:1)

不幸的是,GridView是一个棘手的布局,可以操作以使内部视图适合您正在尝试的特定大小。我认为将GridView视为高级ListView以显示可变长度,可滚动列表(如相册中的缩略图)而不是“网格”更为合适。当我最初想要为游戏制作一个固定大小的网格时,我开始沿着这条路走下去,但根本不适合这种格式。

由于您的网格总是8个单元格,我可以建议使用嵌套的LinearLayout(或者如果您不希望所有单元格的大小完全相同,则更复杂TableLayout / {{1代替:

TableRow

这将使固定的2x4网格始终完全填满屏幕。

答案 1 :(得分:0)

首先,使用PS而不是PX。这将允许它扩展到不同的DPI设备。

其次,要使每个单元格均匀,您可以在包含清晰图像的每个单元格中放置一个tableView。使用PS(不是px)设置图像的大小。表视图应该允许您在每个单元格中对布局对象进行分层,并且清晰图形应该使所有单元格保持相同的大小。

我也会删除任何填充。

告诉我们。

答案 2 :(得分:0)

你应该试试[android:stretchMode] [1]

[1]:http://developer.android.com/reference/android/widget/GridView.html#attr_android:stretchMode:定义列应如何拉伸以填充可用的空白空间(如果有)。