Вариант 1: фигура, которую можно рисовать
Это самый простой вариант, если вам нужна рамка вокруг макета или вида, в которой вы можете установить фон. Создайте XML-файл в папке drawable, который выглядит примерно так:
<?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>
Вы можете удалить solid, если не хотите заливки. Набор background="@drawable/your_shape_drawable" на вашем макете / просмотре.
Вариант 2: фоновый режим
Вот небольшой трюк, который я использовал в RelativeLayout. В основном у вас есть черный квадрат под представлением, которое вы хотите дать рамкой, а затем добавьте этому представлению некоторый отступ (не поля!), Чтобы черный квадрат просвечивал по краям.
Очевидно, это работает правильно только в том случае, если в представлении нет прозрачных областей. Если это так, я бы порекомендовал вам написать собственный BorderView, который рисует только границу - это должно быть всего несколько десятков строк кода.
<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/..." />
Если вам интересно, он действительно работает с adjustViewBounds=true. Однако это не сработает, если вы хотите иметь фон для всего RelativeLayout, потому что есть ошибка, из-за которой вы не можете заполнить RelativeLayout View. В этом случае я бы рекомендовал Shape drawable.
Вариант 3: 9 патчей
Последний вариант - использовать 9-патчовый рисунок, подобный этому:

Вы можете использовать его в любом представлении, где вы можете установить android:background="@drawable/...". И да, это должно быть 6x6 - я пробовал 5x5, и это не сработало.
Недостатком этого метода является то, что вы не можете очень легко изменить цвета, но если вам нужны необычные границы (например, только граница сверху и снизу, как в этом вопросе), вы не сможете сделать их с Shape drawable, что не очень мощно.
Вариант 4: дополнительные просмотры
Я забыл упомянуть об этом действительно простом варианте, если вам нужны только границы над и под вашим видом. Вы можете расположить свой вид вертикально LinearLayout (если это еще не сделано), а затем добавить пустые View сверху и снизу следующим образом:
<View android:background="#000" android:layout_width="match_parent" android:layout_height="1px"/>
person
Timmmm
schedule
17.10.2012