Puedo dibujar el borde en un diseño lineal, pero se dibuja en todos los lados. Quiero restringirlo solo al lado derecho, como lo hace en CSS (border-right: 1px solid red;).
He intentado esto, pero aún 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.
Respuestas:
Puede usar esto para obtener borde en un lado
EDITADO
Como muchos, incluyéndome a mí, querían tener un borde de un lado con fondo transparente, he implementado uno
BorderDrawable
que podría darme bordes con diferentes tamaños y colores de la misma manera que usamos css. Pero esto no se pudo usar a través de xml. Para admitir XML, he agregado unBorderFrameLayout
en el que su diseño se puede ajustar.Vea mi github para la fuente completa.
fuente
Fácil como un pastel, permitiendo un bg transparente:
Cambie el ángulo para cambiar la ubicación del borde:
fuente
También es posible implementar lo que quieras usando una sola capa
de esta manera sólo borde izquierdo es visible, pero se puede lograr cualquier combinación que desee jugar con
bottom
,left
,right
ytop
los atributos delitem
elementofuente
Para obtener un borde en un solo lado de un dibujo, aplique un negativo
inset
a los otros 3 lados (haciendo que esos bordes se dibujen fuera de la pantalla).Este enfoque es similar a la respuesta de naykah, pero sin el uso de a
layer-list
.fuente
insertX
en la parte superior para decidir qué bordes mostrar y qué no.Como alternativa (si no desea utilizar el fondo), puede hacerlo fácilmente haciendo una vista de la siguiente manera:
Para tener un borde derecho solamente, colóquelo después del diseño (donde desea tener el borde):
Para tener solo un borde izquierdo, colóquelo antes del diseño (donde desea tener el borde):
Trabajó para mí ... Espero que sea de alguna ayuda ...
fuente
Pude lograr el efecto con el siguiente código
Puede ajustarse a sus necesidades de posición en el borde cambiando la dirección de desplazamiento
fuente
fuente
Otro gran ejemplo
fuente
No hay mención sobre los archivos de nueve parches aquí. Sí, tiene que crear el archivo, sin embargo, es un trabajo bastante fácil y es realmente una solución de " versión cruzada y soporte de transparencia ". Si el archivo se coloca en el
drawable-nodpi
directorio, funciona enpx
base, y en losdrawable-mdpi
trabajos aproximadamente como base dp (gracias al remuestreo).El archivo de ejemplo para la pregunta original ( border-right: 1px solid red; ) está aquí:
http://ge.tt/517ZIFC2/v/3?c
Simplemente colóquelo en el
drawable-nodpi
directorio.fuente
Fronteras de diferentes colores. Usé 3 artículos.
fuente