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 drawable
Ordner, 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, solid
wenn 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 BorderView
Code 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 RelativeLayout
mit 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 Shape
Zeichenelement 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 View
wie folgt leere s darüber und darunter hinzufügen :
<View android:background="#000" android:layout_width="match_parent" android:layout_height="1px"/>