0

我有一个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>

由于我只有 2 行项目GridView,我希望这两行完全填满屏幕,不留下任何空白空间或不超出屏幕高度,这需要滚动才能完全看到。为此,我做了这个(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);

这并没有给出我想要的:

在此处输入图像描述

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

在此处输入图像描述

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

在此处输入图像描述

4

1 回答 1

2

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

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

我的建议是使用另一种布局,然后GridView. 下面的示例(您可以使用 aninclude使其更小)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <View
        android:id="@+id/anchor"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_centerInParent="true" />

    <RelativeLayout
        android:id="@+id/griditem1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@id/anchor"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_margin="3dp"
        android:layout_toLeftOf="@id/anchor"
        android:background="#ffffff"
        android:gravity="center"
        android:padding="5dp" >

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

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

    <RelativeLayout
        android:id="@+id/griditem2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@id/anchor"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:layout_margin="3dp"
        android:layout_toRightOf="@id/anchor"
        android:background="#ffffff"
        android:gravity="center"
        android:padding="5dp" >

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

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

      <RelativeLayout
        android:id="@+id/griditem3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/anchor"
        android:layout_alignParentLeft="true"
        android:layout_alignParentBottom="true"
        android:layout_margin="3dp"
        android:layout_toLeftOf="@id/anchor"
        android:background="#ffffff"
        android:gravity="center"
        android:padding="5dp" >

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

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


      <RelativeLayout
        android:id="@+id/griditem4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/anchor"
        android:layout_alignParentRight="true"
        android:layout_alignParentBottom="true"
        android:layout_margin="3dp"
        android:layout_toRightOf="@id/anchor"
        android:background="#ffffff"
        android:gravity="center"
        android:padding="5dp" >

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

        <TextView
            android:id="@+id/grid_item_label4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@id/grid_item_image"
            android:layout_alignRight="@id/grid_item_image"
            android:layout_below="@id/grid_item_image"
            android:layout_marginTop="5dp"
            android:gravity="center"
            android:text="@+id/label"
            android:textColor="#000000"
            android:textSize="15dp" >
        </TextView>
    </RelativeLayout>
</RelativeLayout>
于 2012-06-16T08:24:49.463 回答