style studio poner personalizar edittext contorno como color bordes borde android

studio - poner borde a un textview android



¿Cómo dibujar el borde en un solo lado de un diseño lineal? (9)

Puedo dibujar un borde en un diseño lineal, pero se dibuja en todos los lados. Quiero restringirlo al lado derecho solamente, como lo haces en CSS (borde-derecha: 1px rojo sólido;).

He intentado esto, pero todavía se basa en todos los lados:

<?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:height="2dp" android:width="2dp" android:color="#FF0000" /> <solid android:color="#000000" /> <padding android:bottom="0dp" android:left="0dp" android:right="1dp" android:top="0dp" /> <corners android:bottomLeftRadius="0dp" android:bottomRightRadius="5dp" android:radius="1dp" android:topLeftRadius="5dp" android:topRightRadius="0dp" /> </shape> </item>

¿Alguna sugerencia sobre cómo lograr esto?

Por cierto, no quiero usar el truco de poner una vista de ancho 1dp en el lado requerido.


Como alternativa (si no desea utilizar el fondo), puede hacerlo fácilmente haciendo una vista de la siguiente manera:

<View android:layout_width="2dp" android:layout_height="match_parent" android:background="#000000" />

Para tener solo un borde derecho, colóquelo después del diseño (donde desea tener el borde):

<View android:layout_width="2dp" android:layout_height="match_parent" android:background="#000000" />

Para tener solo un borde izquierdo, coloque esto antes del diseño (donde desea tener el borde):

Trabajó para mí ... Espero que sea de alguna ayuda ...


Fácil como un pastel, lo que permite un bg transparente:

<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <gradient android:angle="0" android:startColor="#f00" android:centerColor="@android:color/transparent" android:centerX="0.01" /> </shape>

Cambia el ángulo para cambiar la ubicación del borde:

  • 0 = izquierda
  • 90 = abajo
  • 180 = derecha
  • 270 = arriba

No hay mención sobre archivos de nine-patch aquí. Sí, tienes que crear el archivo, sin embargo es un trabajo bastante fácil y en realidad es una solución de " compatibilidad entre versiones y transparencia ". Si el archivo se coloca en el directorio drawable-nodpi , funciona en base a px , y en drawable-mdpi funciona aproximadamente como base dp (gracias a remuestrear).

El archivo de ejemplo para la pregunta original ( border-right: 1px solid red; ) está aquí:

http://ge.tt/517ZIFC2/v/3?c

Solo colóquelo en el directorio drawable-nodpi .


Para obtener un borde en un solo lado de un dibujo, aplique un inset negativo a los otros 3 lados (haciendo que los bordes se dibujen fuera de la pantalla).

<?xml version="1.0" encoding="utf-8"?> <inset xmlns:android="http://schemas.android.com/apk/res/android" android:insetTop="-2dp" android:insetBottom="-2dp" android:insetLeft="-2dp"> <shape android:shape="rectangle"> <stroke android:width="2dp" android:color="#FF0000" /> <solid android:color="#000000" /> </shape> </inset>

Este enfoque es similar a la respuesta de naykah, pero sin el uso de una layer-list .


Pude lograr el efecto con el siguiente código

<?xml version=“1.0” encoding=“utf-8"?> <layer-list xmlns:android=“http://schemas.android.com/apk/res/android” > <item android:left=“0dp” android:right=“-5dp” android:top=“-5dp” android:bottom=“-5dp”> <shape android:shape=“rectangle”> <stroke android:width=“1dp” android:color=“#123456" /> </shape> </item> </layer-list>

Puede ajustarse a sus necesidades para la posición de borde cambiando la dirección del desplazamiento


Puedes usar esto para obtener el borde en un lado

<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="rectangle"> <solid android:color="#FF0000" /> </shape> </item> <item android:left="5dp"> <shape android:shape="rectangle"> <solid android:color="#000000" /> </shape> </item> </layer-list>

EDITADO

Como muchos, incluyéndome, quería tener un borde lateral con fondo transparente, he implementado un BorderDrawable que podría darme bordes con diferente tamaño y color de la misma manera que usamos css. Pero esto no se pudo usar a través de xml. Para admitir XML, he agregado un BorderFrameLayout en el que se puede BorderFrameLayout su diseño.

Ver mi github para la fuente completa.


también es posible implementar lo que quieras usando una sola capa

<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:bottom="-5dp" android:right="-5dp" android:top="-5dp"> <shape android:shape="rectangle" > <solid android:color="@color/color_of_the_background" /> <stroke android:width="5dp" android:color="@color/color_of_the_border" /> </shape> </item> </layer-list>

De esta forma, solo se ve el borde izquierdo, pero puede lograr cualquier combinación que desee jugando con top atributos bottom , left , right y top del item elemento.


Boder de color diferente. He usado 3 elementos a continuación es el código.

<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="rectangle"> <solid android:color="@color/colorAccent" /> </shape> </item> <item android:top="3dp"> <shape android:shape="rectangle"> <solid android:color="@color/light_grey" /> </shape> </item> <item android:bottom="1dp" android:left="1dp" android:right="1dp" android:top="3dp"> <shape android:shape="rectangle"> <solid android:color="@color/colorPrimary" /> </shape> </item> </layer-list>


<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" > <shape> <solid android:color="#f28b24" /> <stroke android:width="1dp" android:color="#f28b24" /> <corners android:radius="0dp"/> <padding android:left="0dp" android:top="0dp" android:right="0dp" android:bottom="0dp" /> </shape> </item> <item> <shape> <gradient android:startColor="#f28b24" android:endColor="#f28b24" android:angle="270" /> <stroke android:width="0dp" android:color="#f28b24" /> <corners android:bottomLeftRadius="8dp" android:bottomRightRadius="0dp" android:topLeftRadius="0dp" android:topRightRadius="0dp"/> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> </item> </selector>