Opción 1: forma dibujable
Esta es la opción más simple si desea un borde alrededor de un diseño o vista en el que puede establecer el fondo. Cree un archivo XML en la drawable
carpeta que se vea así:
<?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>
Puede eliminar el solid
si no desea un relleno. El conjunto background="@drawable/your_shape_drawable"
en su diseño / vista.
Opción 2: Vista de fondo
Aquí hay un pequeño truco que he usado en un RelativeLayout
. Básicamente, tiene un cuadrado negro debajo de la vista que desea dar a un borde, y luego dale a esa vista algo de relleno (¡no margen!) Para que el cuadrado negro se vea en los bordes.
Obviamente, esto solo funciona correctamente si la vista no tiene áreas transparentes. Si es así, te recomendaría que escribas una costumbre BorderView
que solo dibuje el borde, solo debería ser una docena de líneas de código.
<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/..." />
Si usted se pregunta, que hace el trabajo con adjustViewBounds=true
. Sin embargo, no funciona si quieres tener un fondo completo RelativeLayout
, porque hay un error que te impide llenar un RelativeLayout
a View
. En ese caso, recomendaría el Shape
dibujable.
Opción 3: 9 parches
Una última opción es usar un dibujo de 9 parches como este:
Puede usarlo en cualquier vista donde pueda configurarlo android:background="@drawable/..."
. Y sí, tiene que ser 6x6: probé 5x5 y no funcionó.
La desventaja de este método es que no puede cambiar los colores muy fácilmente, pero si desea bordes elegantes (por ejemplo, solo un borde en la parte superior e inferior, como en esta pregunta), es posible que no pueda hacerlo con el Shape
dibujo , que no es muy poderoso.
Opción 4: vistas adicionales
Olvidé mencionar esta opción realmente simple si solo quieres bordes arriba y abajo de tu vista. Puede poner su vista en vertical LinearLayout
(si aún no lo está) y luego agregar View
s vacías arriba y debajo de esta manera:
<View android:background="#000" android:layout_width="match_parent" android:layout_height="1px"/>