131 votes

Comment définir le rayon des coins arrondis d'un dessinateur de couleur à l'aide de xml ?

Sur le site web d'Android, il y a un section sur les dessinateurs de couleur . La définition de ces drawables en xml ressemble à ceci :

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

Dans l'API Java, il existe la méthode suivante pour définir les coins arrondis :

setCornerRadius(float radius)

Existe-t-il un moyen de définir les coins arrondis dans le fichier xml ?

0 votes

Pour définir les coins à partir du code, voir (Gradient Drawables) : stackoverflow.com/questions/8709595/

361voto

mbaird Points 31293

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

Voici une copie d'un fichier XML que j'utilise dans l'une de mes applications pour créer un dessinable 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:radius="7dp" /> 
</shape>

1 votes

Où enregistrer ce fichier et comment le récupérer dans mon code java ? merci

7 votes

Enregistrez-le en tant que fichier xml dans le répertoire drawable, puis utilisez-le comme vous le feriez avec n'importe quel drawable (icône ou fichier de ressource) en utilisant son nom de ressource (R.drawable.votre_nom_xml_)

30 votes

Dans ce cas particulier, tous les rayons sont identiques, vous auriez donc pu utiliser Android:radius="7dp".

19voto

John Pisello Points 1

La réponse de mbaird fonctionne bien. Sachez simplement qu'il semble y avoir un bug dans Android (2.1 au moins), qui fait que si vous définissez le rayon d'un coin individuel à 0, cela force tous les coins à 0 (du moins c'est le cas avec les unités "dp" ; je n'ai pas essayé avec d'autres unités).

J'avais besoin d'une forme dont les coins supérieurs étaient arrondis et les coins inférieurs carrés. J'y suis parvenu en fixant les coins que je voulais carrés à une valeur légèrement supérieure à 0 : 0.1dp. Cela donne toujours des coins carrés, mais cela ne force pas les autres coins à avoir un rayon de 0.

0 votes

Vous venez d'écrire 0.1 dp ? Est-ce que ça marche, j'ai aussi besoin de coins supérieurs arrondis et de coins inférieurs carrés, même problème que vous, j'ai juste utilisé 1 dp, sur les coins carrés et 10dp sur les coins ronds, vous avez raison, c'est encore perceptible, mais ça me donne 90% de ce que je veux, selon la documentation, mettre 0 sur les coins non arrondis aurait dû fonctionner.

0 votes

En fait, ce n'est pas un bug, c'est dans la documentation : developer.Android.com/guide/topics/resources/

18voto

Mujahid khan Points 44

Essayez le code ci-dessous

<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>

Out put

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X