J'ai quelques problèmes pour trouver la documentation des définitions de formes en XML pour Android. J'aimerais définir un simple cercle rempli d'une couleur unie dans un fichier XML pour l'inclure dans mes fichiers de mise en page.
Malheureusement, la documentation sur Android.com ne couvre pas les attributs XML des classes Shape. Je pense que je devrais utiliser un ArcShape pour dessiner un cercle, mais rien n’explique comment définir la taille, la couleur ou l’angle nécessaire pour créer un cercle à partir d’un arc.
Il s’agit d’un simple cercle dessiné sous Android.
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="oval">
<solid
Android:color="#666666"/>
<size
Android:width="120dp"
Android:height="120dp"/>
</shape>
Définir comme arrière-plan de votre vue
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="oval">
<stroke
Android:width="1dp"
Android:color="#78d9ff"/>
</shape>
Pour les cercles pleins:
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="oval">
<solid
Android:color="#48b3ff"/>
</shape>
Solide avec le coup:
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="oval">
<solid Android:color="#199fff"/>
<stroke
Android:width="2dp"
Android:color="#444444"/>
</shape>
Note: pour que la forme oval
apparaisse sous forme de cercle, dans ces exemples, votre vue selon laquelle vous utilisez cette forme comme arrière-plan doit être un carré ou vous devez définir les propriétés height
et width
de la balise de forme à une valeur égale.
Code pour le cercle simple
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android" Android:shape="oval">
<solid Android:color="#9F2200"/>
<stroke Android:width="2dp" Android:color="#fff" />
<size Android:width="80dp" Android:height="80dp"/>
</shape>
Regardez dans les exemples du SDK Android. Il y a plusieurs exemples dans le projet ApiDemos:
/ ApiDemos/res/drawable /
Cela ressemblera à ceci pour un cercle avec un remplissage en dégradé:
<? xml version = "1.0" encoding = "utf-8"?> <forme xmlns: Android = "http://schemas.Android.com/apk/res/Android" Android: forme = "ovale"> <gradient Android: startColor = "# FFFF0000" Android: endColor = "# 80FF00FF" Android: angle = "270" /> </ forme>
Vous pouvez utiliser VectorDrawable comme ci-dessous:
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:width="200dp"
Android:height="200dp"
Android:viewportHeight="64"
Android:viewportWidth="64">
<path
Android:fillColor="#ff00ff"
Android:pathData="M22,32
A10,10 0 1,1 42,32
A10,10 0 1,1 22,32 Z" />
</vector>
Le XML ci-dessus se présente comme suit:
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="oval">
<!-- fill color -->
<solid Android:color="@color/white" />
<!-- radius -->
<stroke
Android:width="1dp"
Android:color="@color/white" />
<!-- corners -->
<corners
Android:radius="2dp"/>
</shape>
Voici un simple circle_background.xml pour le pré-matériau:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:state_pressed="true">
<shape Android:shape="oval">
<solid Android:color="@color/color_accent_dark" />
</shape>
</item>
<item>
<shape Android:shape="oval">
<solid Android:color="@color/color_accent" />
</shape>
</item>
</selector>
Vous pouvez utiliser l'attribut 'Android:background="@drawable/circle_background"
dans la définition de la présentation de votre bouton
Si vous voulez un cercle comme ceci
Essayez d'utiliser le code ci-dessous:
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:innerRadius="0dp"
Android:shape="ring"
Android:thicknessRatio="2"
Android:useLevel="false" >
<solid Android:color="@Android:color/white" />
<stroke
Android:width="1dp"
Android:color="@Android:color/darker_gray" /></shape>
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="oval">
<stroke
Android:width="10dp"
Android:color="@color/white"/>
<gradient
Android:startColor="@color/red"
Android:centerColor="@color/red"
Android:endColor="@color/red"
Android:angle="270"/>
<size
Android:width="250dp"
Android:height="250dp"/>
</shape>
Vous pouvez essayer ceci -
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="ring"
Android:innerRadiusRatio="700"
Android:thickness="100dp"
Android:useLevel="false">
<solid Android:color="#CCC" />
</shape>
De plus, vous pouvez ajuster le rayon du cercle en ajustant Android:thickness
.
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item>
<shape Android:shape="oval">
<solid Android:color="@color/text_color_green"/>
<!-- Set the same value for both width and height to get a circular shape -->
<size Android:width="250dp" Android:height="250dp"/>
</shape>
</item>
</selector>
res/drawble/circle_shape.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item>
<shape Android:shape="oval">
<solid Android:color="#e42828"/>
<stroke Android:color="#3b91d7" Android:width="5dp"/>
<!-- Set the same value for both width and height to get a circular shape -->
<size Android:width="250dp" Android:height="250dp"/>
</shape>
</item>
</selector>
exemple en ligne : https://code-Android-example.blogspot.com/2019/07/how-to-circle-shape-in-xml-drawable-Android.html
Je ne pouvais pas tracer de cercle dans mon ConstraintLayout pour une raison quelconque, je ne pouvais tout simplement pas utiliser les réponses ci-dessus.
Ce qui a parfaitement fonctionné est un simple TextView avec le texte qui sort lorsque vous appuyez sur "Alt + 7":
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:textColor="#0075bc"
Android:textSize="40dp"
Android:text="•"></TextView>