¿Existe una manera sencilla de agregar un borde en la parte superior e inferior de una vista de Android?
Tengo un TextView y me gustaría agregar un borde negro a lo largo de sus bordes superior e inferior. Intenté agregar android:drawableTop
y android:drawableBottom
a TextView, pero eso solo provocó que toda la vista se volviera negra.
<TextView
android:background="@android:color/green"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:drawableTop="@android:color/black"
android:drawableBottom="@android:color/black"
android:text="la la la" />
¿Hay alguna manera de agregar fácilmente un borde superior e inferior a una Vista (en particular, una Vista de Texto) en Android?
En Android 2.2 puedes hacer lo siguiente.
Cree un elemento de diseño xml como /res/drawable/textlines.xml y asígnelo como propiedad de fondo de TextView.
<TextView
android:text="My text with lines above and below"
android:background="@drawable/textlines"
/>
/res/drawable/textlines.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape
android:shape="rectangle">
<stroke android:width="1dp" android:color="#FF000000" />
<solid android:color="#FFDDDDDD" />
</shape>
</item>
<item android:top="1dp" android:bottom="1dp">
<shape
android:shape="rectangle">
<stroke android:width="1dp" android:color="#FFDDDDDD" />
<solid android:color="#00000000" />
</shape>
</item>
</layer-list>
La desventaja de esto es que debes especificar un color de fondo opaco, ya que las transparencias no funcionarán. (Al menos pensé que sí, pero me equivoqué). En el ejemplo anterior, puede ver que el color sólido de la primera forma #FFdddddd se copia en el color del trazo de la segunda forma.
Utilicé un truco para que el borde se muestre fuera del contenedor. Con este truco sólo se dibuja una línea para que se muestre el fondo de la vista subyacente.
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:bottom="1dp"
android:left="-2dp"
android:right="-2dp"
android:top="-2dp">
<shape android:shape="rectangle" >
<stroke
android:width="1dp"
android:color="#FF000000" />
<solid android:color="#00FFFFFF" />
<padding android:left="10dp"
android:right="10dp"
android:top="10dp"
android:bottom="10dp" />
</shape>
</item>
</layer-list>