2013-08-19 21 views
10

Ho creato gridview con l'adattatore del cliente. Per assegnare ciascun bordo di cella, li ho posizionati in due layout. Il primo layout ha il nero bg e il secondo layout ha il bianco bg e il contenuto. e ho dato il padding 1dp del layout genitore, che ha un aspetto del bordoCome assegnare un bordo di linea singola a gridview android

ma il problema è che quando due celle si incontrano verticalmente, la loro dimensione del bordo diventa 2 dpi, cioè il bordo inferiore di una cella si fonde nel bordo superiore dell'altro cella.

Ma mi piace creare confine, come in data immagine

border example

Ecco il codice del file xml di mia cella corrente

<?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

Non sono sicuro, ma ciò che si desidera ottenere può essere fatto con Tablelayout. – Sushil

+0

@Sushil, nella disposizione delle tabelle Avrò problemi nel popolamento delle celle, e anche nel layout della tabella il bordo delle celle raddoppierà dove le celle si incontreranno. – kaibuki

risposta

25

Si dovrebbe fare il prossimo:

  • imposta il colore di sfondo del tuo gridview sarà un colore di bordo
  • set di colori di sfondo del vostro articolo griglia come è necessario
  • la spaziatura verticale e orizzontale impostare sarà uno spessore bordo

e non dimenticate di cambiare voi oggetto griglia di altezza layout match_parent

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

Questo mostra un elemento vuoto con colore di sfondo quando il numero di colonne in GridView è 2 con numero dispari di elementi. –

Problemi correlati