2013-08-19 9 views
10

Utworzono gridview z adapterem klienta. Aby podać każdą granicę komórki, umieściłem je w dwóch układach. Pierwszy układ ma czarny bg, a drugi układ ma biały bg i zawartość. i nadałem układowi nadrzędnemu 1dp wypełnienie, które nadano graniczny wygląd, ale problem polega na tym, że gdy dwie komórki spotykają się w pionie, ich rozmiar granicy staje się 2p, tj. dolna granica jednej komórki łączy się z górną granicą innej komórki.Jak podać pojedynczą granicę linii do widoku siatki Android

Ale chciałbym stworzyć granicę jak w dany obraz

border example

Oto kod mojego obecnego komórki pliku 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

Nie jestem pewien, ale to, co chcesz osiągnąć, można zrobić za pomocą Tablelayout. – Sushil

+0

@Sushil, w układzie tabeli będę miał problem z zapełnianiem komórek, a nawet w układzie tabeli granica komórek podwoi się tam, gdzie spotykają się komórki. – kaibuki

Odpowiedz

25

Należy zrobić następny:

  • ustaw kolor tła twojego gridview będzie to kolor obramowania
  • zestaw kolor tła swojego elementu sieci, jak trzeba
  • ustawić odstępy pionowe i poziome będzie to grubość obramowania

I nie zapomnij, aby zmienić wysokość ty rzecz siatki układu jako match_parent

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

To pokazuje pusty element z kolorem tła, gdy liczba kolumn w GridView wynosi 2 z nieparzystą liczbą elementów. –

Powiązane problemy