Android – dessiné avec des coins arrondis au sommet seulement

J'avais ce dessinable d'avoir un rectangle arrondi en 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 cela pour ne tourner que sur les coins supérieurs, alors je le modifie:

 <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 arrondis et j'ai un rectangle simple. Qu'est-ce que j'oublie ici?

6 Solutions collect form web for “Android – dessiné avec des coins arrondis au sommet seulement”

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 à 0.1dp .

EDIT: voir le commentaire d'Alex ci-dessous pour une version plus propre

Essayez de faire quelque chose comme ceci:

 <?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 différents rayons de rectangle. Vous pouvez donc utiliser ce hack.

S'appuyant sur la réponse de Busylee, voici comment vous pouvez créer un drawable qui ne comporte qu'un coin non 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 le drawable ci-dessus n'est pas affiché correctement dans l'aperçu de Android Studio (2.0.0p7). Pour l'apercevoir de toute façon, créez une autre vue et utilisez ceci comme android:background="@drawable/..." .

Dans mon cas ci-dessous 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> 

J'ai essayé votre code. J'ai eu un bouton d'angle arrondi supérieur. J'ai donné les couleurs comme @ffffff et srtoke j'ai donné # C0C0C0. Essayez 1) en donnant à android: bottomLeftRadius = "0.1dp" au lieu de 0. s'il ne fonctionne pas 2) vérifie ce que l'on peut tirer et la résolution des émulateurs. J'ai créé un dossier déplaçable sous res et l'utiliser. (Hdpi, mdpi ldpi) vous avez ce xml. C'est mon passage

Entrez la description de l'image ici

Vous devrez peut-être lire ce https://developer.android.com/guide/topics/resources/drawable-resource.html#Shape

Et ci-dessous il y a une Note.

Remarque Chaque angle doit (initialement) être doté d'un rayon d'angle supérieur à 1, sinon aucun angle n'est arrondis. Si vous souhaitez que les coins spécifiques ne soient pas arrondis, un work-around consiste à utiliser Android: rayon pour définir un rayon de coin par défaut supérieur à 1, mais ensuite remplacer chaque coin avec les valeurs que vous voulez vraiment, en fournissant zéro ("0dp" ) Où vous ne voulez pas de coins arrondis.

coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.