Option 1: Form zeichnbar
Dies ist die einfachste Option, wenn Sie einen Rahmen um ein Layout oder eine Ansicht möchten, in dem Sie den Hintergrund festlegen können. Erstellen Sie eine XML-Datei in dem drawableOrdner, der ungefähr so aussieht:
<?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>
Sie können das entfernen, solidwenn Sie keine Füllung wünschen. Der Satzbackground="@drawable/your_shape_drawable" in Ihrem Layout / Ihrer Ansicht.
Option 2: Hintergrundansicht
Hier ist ein kleiner Trick, den ich in einem verwendet habe RelativeLayout . Grundsätzlich haben Sie ein schwarzes Quadrat unter der Ansicht, der Sie einen Rand geben möchten, und geben dieser Ansicht dann etwas Polsterung (nicht Rand!), Damit das schwarze Quadrat an den Rändern durchscheint.
Dies funktioniert natürlich nur dann ordnungsgemäß, wenn die Ansicht keine transparenten Bereiche aufweist. In diesem Fall würde ich empfehlen, einen benutzerdefinierten BorderViewCode zu schreiben, der nur den Rand zeichnet - es sollten nur ein paar Dutzend Codezeilen sein.
<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/..." />
Wenn Sie sich fragen, es tut Arbeit mit adjustViewBounds=true. Es funktioniert jedoch nicht, wenn Sie einen Hintergrund in einem Ganzen haben möchten RelativeLayout, da es einen Fehler gibt , der Sie daran hindert , einen RelativeLayoutmit einem zu füllen View. In diesem Fall würde ich das empfehlenShape Drawable .
Option 3: 9-Patch
Eine letzte Option ist die Verwendung eines 9-Patch-Zeichens wie dieses:

Sie können es in jeder Ansicht verwenden, in der Sie festlegen können android:background="@drawable/...". Und ja, es muss 6x6 sein - ich habe 5x5 ausprobiert und es hat nicht funktioniert.
Der Nachteil dieser Methode ist, dass Sie die Farben nicht einfach ändern können. Wenn Sie jedoch ausgefallene Ränder wünschen (z. B. nur einen Rand oben und unten, wie in dieser Frage), können Sie diese möglicherweise nicht mit dem ShapeZeichenelement ausführen , was nicht sehr mächtig ist.
Option 4: Zusätzliche Ansichten
Ich habe vergessen, diese wirklich einfache Option zu erwähnen, wenn Sie nur Ränder über und unter Ihrer Ansicht haben möchten. Sie können Ihre Ansicht vertikal platzieren LinearLayout(falls noch nicht geschehen) und dann Viewwie folgt leere s darüber und darunter hinzufügen :
<View android:background="#000" android:layout_width="match_parent" android:layout_height="1px"/>