web-dev-qa-db-ja.com

グリッドビューに単一線の境界線を与える方法android

カスタマーアダプターを使用してグリッドビューを作成しました。各セルの境界線を付けるために、2つのレイアウトに配置しました。最初のレイアウトには黒のbgがあり、2番目のレイアウトには白のbgとコンテンツがあります。親レイアウトに1dpのパディングを付けました。これにより、境界線の外観が得られます。

ただし、問題は、2つのセルが垂直に交わると、それらの境界サイズが2dpになることです。つまり、一方のセルの下側の境界が他のセルの上側の境界に結合されます。

しかし、私は与えられた画像のように境界線を作成するのが好きです

border example

これが私の現在のセルの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>
10
kaibuki

次のことを行う必要があります。

  • グリッドビューの背景色を設定すると、境界線の色になります
  • 必要に応じてグリッドアイテムの背景色を設定します
  • 縦と横の間隔を設定すると、境界線の太さになります

また、グリッドアイテムのレイアウトの高さをmatch_parentとして変更することを忘れないでください

GridView gv = findViewById(R.id.my_grid_view);
gv.setBackgroundColor(Color.WHITE);
gv.setVerticalSpacing(1);
gv.setHorizontalSpacing(1);
25
cooperok