web-dev-qa-db-fra.com

Comment définir le rayon de coin arrondi d'une couleur pouvant être dessinée à l'aide de xml?

Sur le site Web Android, il existe une section sur les couleurs pouvant être dessinées . La définition de ces couleurs au xml ressemble à ceci:

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

Dans le Java api, ils ont la méthode suivante pour définir les coins arrondis:

setCornerRadius(float radius)

Est-il possible de définir les coins arrondis dans le XML?

99
Jay Askren

Utilisez le <shape> balise pour créer un dessin XML avec des coins arrondis. (Vous pouvez faire d'autres choses avec la balise shape, comme définir un dégradé de couleur également).

Voici une copie d'un fichier XML que j'utilise dans l'une de mes applications pour créer un dessin avec un fond blanc, une bordure noire et des coins arrondis:

<?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>
285
Mark B

la réponse de mbaird fonctionne bien. Sachez simplement qu’il semble y avoir un bogue dans Android (au moins la version 2.1), si vous définissez le rayon de chaque coin individuel sur 0, il forcera tous les coins à 0 (du moins le cas avec des unités "dp"; je n’ai pas essayé avec d’autres unités).

J'avais besoin d'une forme où les coins supérieurs étaient arrondis et les coins inférieurs étaient carrés. Cela a été réalisé en réglant les coins que je voulais être carrés à une valeur légèrement supérieure à 0: 0,1dp. Cela rend toujours les coins carrés, mais cela ne force pas les autres coins à 0 rayon.

18
John Pisello

Essayez ci-dessous le code

<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>
0
Mujahid khan