¿Cómo se configura el radio de la esquina redondeada de un dibujable color usando XML?

StackOverflow https://stackoverflow.com/questions/2122199

  •  22-09-2019
  •  | 
  •  

Pregunta

En el sitio web de Android, hay una sección sobre dibujables de color . La definición de estas dibujables en apariencia XML siguiente:

<resources>
    <drawable name="solid_red">#f00</drawable>
    <drawable name="solid_blue">#0000ff</drawable>
    <drawable name="solid_green">#f0f0</drawable>
</resources>

En la API de Java, que thr han siguiente método para definir esquinas redondeadas:

setCornerRadius(float radius)

¿Hay una manera de fijar las esquinas redondeadas en el xml?

¿Fue útil?

Solución

Utilice la etiqueta <shape> para crear un estirable en XML con esquinas redondeadas. (Se puede hacer otras cosas con la etiqueta de la forma como definir un degradado de color también).

Aquí hay una copia de un archivo XML que estoy usando en una de mis aplicaciones para crear un estirable con un fondo blanco, frontera de negro y esquinas redondeadas:

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <solid android:color="#ffffffff"/>    

    <stroke android:width="3dp"
            android:color="#ff000000" />

    <padding android:left="1dp"
             android:top="1dp"
             android:right="1dp"
             android:bottom="1dp" /> 

    <corners android:bottomRightRadius="7dp"
             android:bottomLeftRadius="7dp"
             android:topLeftRadius="7dp"
             android:topRightRadius="7dp" /> 
</shape>

Otros consejos

La respuesta de mbaird funciona bien. Sólo ten en cuenta que parece que hay un error en Android (2.1 por lo menos), que si establece un radio de cualquier rincón individuo a 0, que obliga a todos los rincones a 0 (al menos ese es el caso con unidades de "DP"; yo no 't intentarlo con cualquier otra unidad).

I necesitaba una forma donde se redondearon las esquinas superiores y las esquinas inferiores eran cuadrados. Me logrado esto mediante el establecimiento de las esquinas que quería ser cuadrado a un valor ligeramente mayor que 0: 0.1dp. Esto todavía hace como esquinas cuadradas, pero no fuerza las otras esquinas para ser 0 radio.

Trate a continuación código

<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners
    android:bottomLeftRadius="30dp"
    android:bottomRightRadius="30dp"
    android:topLeftRadius="30dp"
    android:topRightRadius="30dp" />
<solid android:color="#1271BB" />

<stroke
    android:width="5dp"
    android:color="#1271BB" />

<padding
    android:bottom="1dp"
    android:left="1dp"
    android:right="1dp"
    android:top="1dp" /></shape>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top