325 votes

Comment créer EditText avec des coins arrondis?

Comment créer un EditText qui a des coins arrondis au lieu des coins de forme rectangulaire par défaut?

634voto

Cristian Points 92147

Il y a une façon plus simple que celle écrite par CommonsWare. Il suffit de créer une ressource drawable qui spécifie la façon dont le EditText sera dessiné:

Ensuite, il suffit de faire référence à ce drawable dans votre mise en page:

Vous obtiendrez quelque chose comme:

texte alternatif

Editer

Sur la base du commentaire de Mark, je veux ajouter la manière dont vous pouvez créer différents états pour votre EditText:

Voici les états:

Et... maintenant, le EditText devrait ressembler à ceci:

16 votes

Sauf que votre solution utilise le même drawable pour tous les états. Un EditText normal a des arrière-plans différents pour les états focussé, désactivé, pressé et sélectionné, en plus de celui par défaut. Le focus, en particulier, pourrait être important à l'avenir si nous obtenons des appareils Android qui manquent d'écrans tactiles, comme Google TV.

0 votes

C'est super! Ça fonctionne bien sur l'appareil mais empêche la vue "Graphical Layout" d'afficher mon activité lorsque j'inclus la boîte d'édition arrondie. Le journal des erreurs me donne une 'UnsupportedOperationException:null'. Des idées?

0 votes

Bonne à savoir... en fait, je ne sais pas comment le réparer. Je suppose que c'est un bug de l'ADT d'Eclipse.

134voto

Norfeldt Points 1383

Voici la même solution (avec un peu de code bonus supplémentaire) dans un seul fichier XML :

Ensuite, vous devez définir l'attribut de fond sur le fichier edittext_rounded_corners.xml :

0 votes

Obtenir une erreur comme "0,5dp" dans l'attribut "width" n'est pas un format valide.

0 votes

J'ai essayé d'utiliser la solution ci-dessus mais malheureusement, lorsque je définis simplement topRightRadiuset topLeftRadius, les quatre coins finissent par être arrondis. S'il vous plaît aidez-moi. :(

7voto

CommonsWare Points 402670

À mon sens, il a déjà des coins arrondis.

Si vous souhaitez des coins plus arrondis, vous devrez :

  1. Cloner toutes les images PNG neuf patch qui composent l'arrière-plan d'un EditText (trouvées dans votre kit de développement logiciel)
  2. Modifier chacune pour avoir des coins plus arrondis
  3. Cloner la ressource XML StateListDrawable qui combine ces arrière-plans EditText en un seul Drawable, et la modifier pour pointer vers vos fichiers PNG neuf patch plus arrondis
  4. Utiliser ce nouveau StateListDrawable comme arrière-plan pour votre widget EditText

4voto

kirti avaiya Points 991

Si vous ne voulez courber que les coins et non toute l'extrémité, utilisez le code ci-dessous.

Cela courbera uniquement les quatre angles de EditText.

0voto

DropAndTrap Points 349
    Un edittext à contrôle total.. faites ce que vous voulez à votre manière....

    Voici customshape.xml

    voici la classe actionedittext

public class ActionEditText extends EditText {
    public ActionEditText(Context context) {
        super(context);
    }

    public ActionEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public ActionEditText(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
        InputConnection conn = super.onCreateInputConnection(outAttrs);
        outAttrs.imeOptions &= ~EditorInfo.IME_FLAG_NO_ENTER_ACTION;
        return conn;
    }
}

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