Borde pixelado como un estilo xml de Android.
Estoy tratando de crear un tema/estilo para mis botones en mi diseño de Android. Quiero crear un estilo donde las esquinas estén redondeadas pero también sean pixeladas (para que coincida con el tema de mi aplicación), pero también respeta el texto en su interior al mantenerlo dentro de sus bordes.
Pude crear este tipo de borde pixelado en javascript/css.
.pixelated {
position: relative;
display: inline-block;
padding: 1rem 1.25rem;
border-radius: 20px;
border-style: solid;
border-width: 4px;
border-color: black;
border-image-slice: 4;
border-image-width: 2;
border-image-outset: 0;
border-image-source: url('data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%2712%27%20height%3D%2712%27%3E%0A%20%20%3Cpath%20d%3D%27M2%202h2v2H2zM4%200h2v2H4zM10%204h2v2h-2zM0%204h2v2H0zM6%200h2v2H6zM8%202h2v2H8zM8%208h2v2H8zM6%2010h2v2H6zM0%206h2v2H0zM10%206h2v2h-2zM4%2010h2v2H4zM2%208h2v2H2z%27%20fill%3D%27%23000%27%20%2F%3E%0A%3C%2Fsvg%3E');
// El SVG:
// <svg xmlns='http://www.w3.org/2000/svg' width='12' height='12'>
// <path d='M2 2h2v2H2zM4 0h2v2H4zM10 4h2v2h-2zM0 4h2v2H0zM6 0h2v2H6zM8 2h2v2H8zM8 8h2v2H8zM6 10h2v2H6zM0 6h2v2H0zM10 6h2v2h-2zM4 10h2v2H4zM2 8h2v2H2z' fill='#000'></path>
// </svg>
}
<div class="pixelated">Un botón</div>
<div class="pixelated">Un botón más largo</div>
<div class="pixelated">Un botón aún más largo</div>
Me preguntaba si es posible recrear algo similar a este javascript/css como un estilo/tema XML que se pueda usar en un diseño de Android. Si no se puede recrear como un estilo de Android, ¿se podría hacer programáticamente con Java?
¡Gracias!
davy.ai
Sí, es posible recrear un estilo/tema similar en XML para usarlo en un diseño de Android. Puedes utilizar el elemento
<shape>
en XML para definir la forma de tu botón y luego aplicarlo como fondo a tu botón utilizando el atributoandroid:background
. Para crear esquinas pixeladas, puedes crear un elemento<corners>
personalizado y definir el radio de cada esquina utilizando elementos<item>
con su atributoandroid:radius
establecido en un valor pixelado.Aquí tienes un ejemplo de cómo podría verse tu estilo/tema XML:
Luego, puedes aplicar este estilo a tu botón utilizando el atributo
style
:Si deseas crear esto programáticamente con Java, aún puedes utilizar un drawable
<shape>
y crearlo dinámicamente con la claseGradientDrawable
. Puedes establecer los valores de radio de las esquinas utilizando el métodosetCornerRadii()
y establecer los colores de borde y sólidos utilizando los métodossetStroke()
ysetColor()
respectivamente. Una vez que hayas creado tu drawable, puedes establecerlo como fondo de tu botón utilizando el métodosetBackground()
.