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ため、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);

これは私が望むものを与えません:

ここに画像の説明を入力

2行目が完全に見えていないことがわかります

ここに画像の説明を入力

次のように、これらの 2 行を画面に正確に合わせる方法、またはGridViewアクティビティが呼び出されたときにディスプレイを中央に配置する方法を教えてください。

ここに画像の説明を入力

4

1 に答える 1

2

まず、GridView行と列が2つしかなく、アイテムを追加する予定がない場合は、代わりに単純なRelativeLayout(およびFrameLayout各セルの)アイテムを使用して、必要に応じてグリッドにアイテムを配置してみませんか。 (または2行でを使用できますTableLayout)?それらを適切に配置する方がはるかに簡単で、パフォーマンスは同じになります。

それでも使用したい場合GridViewは、画面のサイズ(すでに行ったように)を行間のスペース、タイトルバーの高さ、通知バーの高さから差し引いて、これを2行に分割する必要があります。 。次に、以前に計算したこのサイズを使用して、アダプターLayoutParamsの方法で膨張したアイテムのレイアウトの高さとして設定しgetViewます(幅を忘れないでください)。

私のアドバイスは、別のレイアウトを使用してからを使用することGridViewです。以下の例(を使用しincludeて小さくすることができます)

<?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 に答える