Варіант 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
малювати.
Варіант 3: 9-патч
Остаточним варіантом є використання 9-латового малювання, подібного до цього:
Ви можете використовувати його в будь-якому вікні, де ви можете встановити android:background="@drawable/..."
. І так, це має бути 6x6 - я спробував 5x5, і це не вийшло.
Недоліком цього методу є те, що ви не можете змінити кольори дуже легко, але якщо ви хочете вигадливих облямівок (наприклад, лише рамки вгорі та внизу, як у цьому питанні), ви, можливо, не зможете їх виконати з Shape
малюнком , який не дуже потужний.
Варіант 4: Додаткові перегляди
Я забув згадати цей дійсно простий варіант, якщо ви хочете лише межі над і нижче вашого погляду. Ви можете розмістити свій погляд у вертикалі LinearLayout
(якщо його ще немає), а потім додати порожні View
s над і під ним так:
<View android:background="#000" android:layout_width="match_parent" android:layout_height="1px"/>