Opzione 1: Shape Drawable
Questa è l'opzione più semplice se si desidera un bordo attorno a un layout o una vista in cui è possibile impostare lo sfondo. Crea un file XML nella drawable
cartella che assomigli a questo:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<solid android:color="#8fff93" />
<stroke
android:width="1px"
android:color="#000" />
</shape>
È possibile rimuovere il solid
se non si desidera un riempimento. Il set background="@drawable/your_shape_drawable"
sul tuo layout / vista.
Opzione 2: vista di sfondo
Ecco un piccolo trucco che ho usato in a RelativeLayout
. Fondamentalmente hai un quadrato nero sotto la vista che vuoi dare un bordo, e poi dai a quella vista un po 'di riempimento (non margine!) In modo che il quadrato nero sia visibile ai bordi.
Ovviamente questo funziona correttamente solo se la vista non ha aree trasparenti. In tal caso, ti consiglio di scrivere un'abitudine BorderView
che disegna solo il bordo: dovrebbe essere solo una dozzina di righe di codice.
<View
android:id="@+id/border"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/image"
android:layout_alignLeft="@+id/image"
android:layout_alignRight="@+id/image"
android:layout_alignTop="@+id/main_image"
android:background="#000" />
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_...
android:padding="1px"
android:src="@drawable/..." />
Se vi state chiedendo, si fa il lavoro con adjustViewBounds=true
. Tuttavia, non funziona se vuoi avere uno sfondo nel suo insieme RelativeLayout
, perché c'è un bug che ti impedisce di riempire a RelativeLayout
con a View
. In tal caso, consiglierei il Shape
disegno.
Opzione 3: 9 patch
Un'ultima opzione è quella di usare un disegnabile a 9 patch come questo:
È possibile utilizzarlo in qualsiasi vista in cui è possibile impostare android:background="@drawable/..."
. E sì, deve essere 6x6 - ho provato 5x5 e non ha funzionato.
Lo svantaggio di questo metodo è che non puoi cambiare i colori molto facilmente, ma se vuoi bordi fantasiosi (ad esempio solo un bordo in alto e in basso, come in questa domanda), potresti non essere in grado di farli con il Shape
disegno , che non è molto potente.
Opzione 4: visualizzazioni extra
Ho dimenticato di menzionare questa opzione davvero semplice se vuoi solo i bordi sopra e sotto la tua vista. Puoi mettere la vista in verticale LinearLayout
(se non lo è già) e quindi aggiungere View
s vuoti sopra e sotto di essa in questo modo:
<View android:background="#000" android:layout_width="match_parent" android:layout_height="1px"/>