2010-12-07 6 views
5

Je créais une forme à utiliser comme arrière-plan d'un bouton. Je fais une bande de boutons, et celui sur le bord gauche va avoir des coins arrondis sur la gauche, et le dernier sur la droite aura des coins arrondis sur la droite. C'est assez simple, et les docs d'api vous montrent juste comment le faire. Cependant, quand j'ai utilisé android:topLeftRadius et android:bottomLeftRadius, le résultat dans l'interface utilisateur était comme si je mettais bottomRightRadius. Le même comportement était vrai de l'autre côté. Il semble que quiconque a implémenté cela a échangé bottomRight et bottomLeft. Je vais poster un extrait du code ci-dessous.Bogue comique dans la déclaration de forme xml Android

Y a-t-il une raison logique à cela que je pourrais manquer? Ou, s'il s'agissait d'une erreur de la part des ingénieurs Android, restera-t-il rétrocompatible une fois le problème résolu? J'imagine qu'ils devraient faire tous les nouveaux attributs pour garder les anciens valides (leftTop au lieu de topLeft peut-être?).

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true" > 
     <shape> 
      <solid android:color="#99000000" /> 
      <padding 
       android:top="8dp" 
       android:left="8dp" 
       android:right="8dp" 
       android:bottom="8dp" /> 
      <corners 
       android:topLeftRadius="8dp" 
       android:bottomRightRadius="8dp" /> 
     </shape> 
    </item> 
+0

duplicata possible de [Comment faire une forme avec le coin rond arrondi en haut à gauche et le coin arrondi en bas à gauche?] (http://stackoverflow.com/questions/3056232/how-to-make -a-forme-avec-gauche-haut-rond-arrondi-coin-et-gauche-bas-arrondi-co) – jamessan

Répondre

2

Je n'arrive pas à le trouver, mais je me souviens d'avoir lu quelque part qu'il y avait un bug qui vous obligeait à remplacer tout d'abord le rayon complet, puis à redéfinir ceux que vous ne voulez pas avoir de rayon; par exemple:

<corners 
    android:radius="8dp" 
    android:topRightRadius="0dp" 
    android:bottomLeftRadius="0dp" 
    /> 

Je ne garantis pas le succès, mais vous pouvez essayer.

EDIT: Ah, Donut semble avoir la bonne réponse.

1
<corners android:topLeftRadius="0.1dp" 
android:topRightRadius="6dp" 
android:bottomRightRadius="0.1dp" 
android:bottomLeftRadius="6px" /> 

Cela fonctionnera pour toleft et en haut à droite. ajustez-le avec vos besoins

Questions connexes