J'ai eu ce dessin que d'avoir un rectangle arrondi comme arrière-plan:
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android">
<solid Android:color="@color/white" />
<stroke Android:width="1dp" Android:color="@color/light_gray" />
<padding Android:left="10dp" Android:top="10dp" Android:right="10dp" Android:bottom="10dp" />
<corners Android:radius="6dp" />
</shape>
Cela fonctionne bien, comme prévu.
Maintenant, je veux changer ceci pour arrondir uniquement les coins supérieurs, donc je le change en ceci:
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android">
<solid Android:color="@color/white" />
<stroke Android:width="1dp" Android:color="@color/light_gray" />
<padding Android:left="10dp" Android:top="10dp" Android:right="10dp" Android:bottom="10dp" />
<corners Android:topLeftRadius="6dp" Android:topRightRadius="6dp"
Android:bottomLeftRadius="0dp" Android:bottomRightRadius="0dp"/>
</shape>
Mais maintenant, aucun des coins n’est arrondi et j’obtiens un rectangle uni. Qu'est-ce que j'oublie ici?
Essayez de donner ces valeurs:
<corners Android:topLeftRadius="6dp" Android:topRightRadius="6dp"
Android:bottomLeftRadius="0.1dp" Android:bottomRightRadius="0.1dp"/>
Notez que j'ai changé 0dp
en 0.1dp
.
EDIT: Voir Aleks G commentaire ci-dessous pour une version plus propre
Essayez de faire quelque chose comme ça:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:bottom="-20dp" Android:left="-20dp">
<shape Android:shape="rectangle">
<solid Android:color="@color/white" />
<corners Android:radius="20dp" />
</shape>
</item>
</layer-list>
Il semble ne pas convenir de définir un rayon de coin différent du rectangle. Donc, vous pouvez utiliser ce hack.
Dans mon cas ci-dessous le code
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:top="10dp" Android:bottom="-10dp"
>
<shape Android:shape="rectangle">
<solid Android:color="@color/maincolor" />
<corners
Android:topLeftRadius="10dp"
Android:topRightRadius="10dp"
Android:bottomLeftRadius="0dp"
Android:bottomRightRadius="0dp"
/>
</shape>
</item>
</layer-list>
En vous appuyant sur réponse de busylee , voici comment créer un drawable
n’ayant qu’un seul un coin arrondi ( en haut à gauche, dans cet exemple):
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item>
<shape Android:shape="rectangle">
<solid Android:color="@color/white" />
<!-- A numeric value is specified in "radius" for demonstrative purposes only,
it should be @dimen/val_name -->
<corners Android:radius="10dp" />
</shape>
</item>
<!-- To keep the TOP-LEFT corner UNROUNDED set both OPPOSITE offsets (bottom+right): -->
<item
Android:bottom="10dp"
Android:right="10dp">
<shape Android:shape="rectangle">
<solid Android:color="@color/white" />
</shape>
</item>
</layer-list>
Veuillez noter que la drawable
ci-dessus n'est pas correctement affichée dans l'aperçu Android Studio (2.0.0p7). Pour le prévisualiser malgré tout, créez une autre vue et utilisez-la en tant que Android:background="@drawable/..."
.
J'ai essayé votre code et obtenu un bouton de coin arrondi en haut. J'ai donné les couleurs comme @ffffff
et le trait que j'ai donné #C0C0C0
.
essayer
Vous devrez peut-être lire ceci https://developer.Android.com/guide/topics/resources/drawable-resource.html#Shape
et ci-dessous il y a une note.
Remarque Chaque rayon doit (initialement) avoir un rayon supérieur à 1, sinon aucun coin n'est arrondi. Si vous souhaitez que certains coins ne soient pas arrondis, vous devez utiliser Android: rayon pour définir un rayon de coin par défaut supérieur à 1, puis remplacez chaque coin par les valeurs souhaitées, en indiquant zéro ("0dp" ) où vous ne voulez pas de coins arrondis.
Créez roung_top_corners.xml sur drawable et copiez le code ci-dessous
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android" Android:shape="rectangle" >
<corners
Android:topLeftRadius="22dp"
Android:topRightRadius="22dp"
Android:bottomLeftRadius="0dp"
Android:bottomRightRadius="0dp"
/>
<gradient
Android:angle="180"
Android:startColor="#1d2b32"
Android:centerColor="#465059"
Android:endColor="#687079"
Android:type="linear" />
<padding
Android:left="0dp"
Android:top="0dp"
Android:right="0dp"
Android:bottom="0dp"
/>
<size
Android:width="270dp"
Android:height="60dp"
/></shape>