2013-08-19 11 views
10

私はカスタマーアダプタでgridviewを作成しました。各セルの境界線を与えるために、私は2つのレイアウトに配置しました。最初のレイアウトは黒いbgを持ち、2番目のレイアウトは白いbgと内容を持っています。私は境界線を与えられた親レイアウト1dpパディングを与えましたgridviewに単線ボーダーを与える方法android

しかし、2つのセルが垂直に出会うと、境界線のサイズが2dpになります。つまり、1つのセルの下端が他のセルの上端境界にマージされます。

しかし、私はここで

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> 
+0

私は確信していますが、あなたはテーブルレイアウトで行うことができます。 – Sushil

+0

@Sushil、テーブルレイアウトでは、セルにデータを入力する際に​​問題が発生します。テーブルレイアウトでも、セルの境界線はセルが重なる場所で倍増します。 – kaibuki

答えて

25

です:

  • グリッドビューの背景色を設定します。境界線の色になります
  • 01あなたのグリッド項目の
  • セットの背景色あなたが垂直方向と水平方向の間隔を設定し
  • を必要として、それは

境界線の太さになり、match_parent

GridView gv = findViewById(R.id.my_grid_view); 
gv.setBackgroundColor(Color.WHITE); 
gv.setVerticalSpacing(1); 
gv.setHorizontalSpacing(1); 
としてあなたグリッド項目のレイアウトの高さを変更することを忘れないでください
+5

GridViewの列数が2で奇数要素の場合、背景色の空要素が表示されます。 –

関連する問題