如何让GridView在屏幕上显示它的中心?

时间:2012-06-16 03:59:38

标签: android android-layout android-gridview

我有GridView这样的main.xml):

<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/gridView1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:columnWidth="100dp"
    android:gravity="center"
    android:numColumns="2"
    android:stretchMode="columnWidth"
    android:background="@color/black"
    android:horizontalSpacing="5dp"
    android:verticalSpacing="5dp" >

</GridView>

GridView这样的项目(grid.xml):

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/gridItemLayout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:padding="5dp"
    android:gravity="center"
    android:background="@color/white" >

    <ImageView
        android:id="@+id/grid_item_image"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:layout_marginRight="10dp"
        android:src="@drawable/person" >
    </ImageView>

    <TextView
        android:id="@+id/grid_item_label"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/grid_item_image"
        android:text="@+id/label"
        android:layout_alignLeft="@id/grid_item_image"
        android:layout_alignRight="@id/grid_item_image"
        android:layout_marginTop="5dp"
        android:textSize="15dp"
        android:gravity="center"
        android:textColor="@color/black" >
    </TextView>

</RelativeLayout>

由于GridView中只有2行项目,我希望这两行完全填满屏幕,不留任何空白空间或超出屏幕高度,这需要滚动才能完全看到。为此,我做了这个(GridViewActivity.java):

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

width = metrics.widthPixels;
height = metrics.heightPixels;

并在我的适配器(ImageAdapter.java)中:

gridView = new View(context);

gridView = inflater.inflate(R.layout.grid, null);
gridView.setMinimumHeight(GridViewActivity.height/2);
gridView.setMinimumWidth(GridViewActivity.width/2);

这不符合我的要求:

enter image description here

你可以看到第二行不完全可见

enter image description here

任何人都可以帮助我如何使这两行完全适合屏幕,或者如何在调用活动时使GridView显示其中心,就像这样:

enter image description here

1 个答案:

答案 0 :(得分:2)

首先,如果您的GridView只有2行2列并且您不打算添加更多项目,那么为什么不使用简单的RelativeLayout(和{ {1}}每个单元格)将这些项目放在网格中(或者你可以使用FrameLayout 2行)?正确定位它们会更容易,性能也会相同。

如果您仍想使用TableLayout,那么您必须找到屏幕的尺寸(就像您已经做过的那样)从行之间的空格,标题栏高度和通知栏高度中减去然后将其划分为2行。然后,您将使用之前计算的此大小将其设置为适配器的GridView方法中膨胀项目布局的LayoutParams的高度(不要忘记宽度)。

我的建议是使用另一种布局,然后使用getView。下面的示例(您可以使用GridView将其缩小)

include