カスタマーアダプターを使用してグリッドビューを作成しました。各セルの境界線を付けるために、2つのレイアウトに配置しました。最初のレイアウトには黒のbgがあり、2番目のレイアウトには白のbgとコンテンツがあります。親レイアウトに1dpのパディングを付けました。これにより、境界線の外観が得られます。
ただし、問題は、2つのセルが垂直に交わると、それらの境界サイズが2dpになることです。つまり、一方のセルの下側の境界が他のセルの上側の境界に結合されます。
しかし、私は与えられた画像のように境界線を作成するのが好きです
これが私の現在のセルのxmlファイルのコードです
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/layBorder"
Android:layout_width="77dp"
Android:layout_height="wrap_content"
Android:background="#000000"
Android:orientation="vertical"
Android:padding="1dp" >
<FrameLayout
Android:id="@+id/FrameLayout1"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:background="#FFFFFF" >
<ImageView
Android:id="@+id/ivElementName"
Android:layout_width="40dp"
Android:layout_height="60dp"
Android:layout_gravity="center_vertical|center_horizontal"
Android:layout_margin="1dp"
Android:adjustViewBounds="true"
Android:background="#00000000"
Android:maxHeight="60dp"
Android:maxWidth="40dp"
Android:minHeight="60dp"
Android:minWidth="40dp" />
<ImageView
Android:id="@+id/ivElementImg"
Android:layout_width="30dp"
Android:layout_height="30dp"
Android:layout_gravity="bottom|center_vertical|center_horizontal"
Android:layout_marginLeft="1dp"
Android:layout_marginRight="1dp"
Android:adjustViewBounds="true"
Android:background="#00000000"
Android:baselineAlignBottom="true"
Android:cropToPadding="true"
Android:maxHeight="30dp"
Android:maxWidth="30dp"
Android:minHeight="30dp"
Android:minWidth="30dp"
Android:visibility="invisible" />
</FrameLayout>
</LinearLayout>
次のことを行う必要があります。
また、グリッドアイテムのレイアウトの高さをmatch_parentとして変更することを忘れないでください
GridView gv = findViewById(R.id.my_grid_view);
gv.setBackgroundColor(Color.WHITE);
gv.setVerticalSpacing(1);
gv.setHorizontalSpacing(1);