EditText : qu'est-ce que c'est, attributs et travail avec les champs de saisie dans Android

Auteur : IT Sectr Publié le : 2026-07-07 Temps de lecture : 9 min

EditText est un composant Android de base conçu pour saisir et éditer du texte dans l'interface utilisateur. Il hérite de TextView et permet la saisie de caractères via des claviers virtuels ou physiques. EditText prend en charge de nombreux modes : texte monoligne et multiligne, mots de passe, nombres, adresses e-mail et numéros de téléphone. Selon Android Developers (2026), EditText est utilisé dans plus de 90 % des applications Android pour créer des formulaires, des champs de recherche, des chats et des écrans de saisie de données.

Points clés

  • EditText est le composant de saisie de texte de base dans Android, une sous-classe de TextView.
  • Modes de saisie — prend en charge le texte, les nombres, les mots de passe, l'e-mail, le téléphone et la saisie multiligne.
  • Attributs XML — configuration via inputType, maxLines, hint, textColorHint et d'autres paramètres.
  • Écouteurs — TextWatcher pour suivre les modifications et OnEditorActionListener pour gérer les actions.
  • Material Design — TextInputLayout étend EditText avec une étiquette flottante et des messages d'erreur.

Qu'est-ce qu'EditText dans Android

EditText est une classe du package android.widget qui implémente un champ de texte interactif pour la saisie de données utilisateur. Dans la hiérarchie d'héritage d'Android, EditText étend TextView, donc il hérite de toutes les propriétés d'une étiquette de texte, y compris la gestion des polices, des couleurs et de l'alignement. La principale différence entre EditText et TextView est la capacité d'éditer le contenu — l'utilisateur peut saisir, supprimer et modifier du texte directement dans l'interface.

Chaque EditText est associé à une instance Editable qui stocke le texte saisi et prend en charge les opérations d'insertion, de suppression et de remplacement. Lors de la frappe, EditText gère automatiquement la position du curseur, la sélection de texte et un historique des modifications pour annuler/rétablir. Selon le Guide des développeurs Android (2026), EditText prend également en charge l'autocomplétion via la classe AutoCompleteTextView, qui hérite d'EditText.

L'architecture d'EditText est basée sur la séparation du modèle (Editable), de la vue (TextView) et du contrôleur (InputConnection). En obtenant le focus, EditText crée un InputConnection par lequel le système de saisie transmet les caractères, les pressions de touches et les commandes d'édition. Ce mécanisme garantit la compatibilité avec toute méthode de saisie — des claviers virtuels aux claviers Bluetooth physiques et à la saisie vocale.

kotlin
val editText = EditText(context).apply {
    hint = "Saisissez le texte"
    inputType = InputType.TYPE_CLASS_TEXT
    maxLines = 1
    setTextColor(Color.parseColor("#000000"))
}

Attributs principaux d'EditText

EditText fournit des dizaines d'attributs pour affiner le comportement et l'apparence. Ils peuvent être définis à la fois dans les mises en page XML et par programmation via Kotlin ou Java. Les attributs sont divisés en catégories : contrôle du texte, contraintes, style visuel et interaction avec le clavier.

AttributDescriptionExemple de valeur
android:hintTexte indicatif affiché dans un champ vide"Saisissez l'e-mail"
android:inputTypeMode de saisie (texte, nombre, mot de passe, etc.)textEmailAddress
android:maxLinesNombre maximal de lignes3
android:maxLengthLongueur maximale du texte en caractères100
android:textColorHintCouleur du texte indicatif#999999

L'attribut android:hint est l'un des plus importants — il indique à l'utilisateur quelles données sont attendues dans le champ. Lorsque du texte est saisi, l'indice est automatiquement masqué. L'indice ne participe pas à l'envoi du formulaire et n'est pas enregistré comme valeur du champ. Material Design recommande d'utiliser TextInputLayout avec une étiquette flottante plutôt qu'un simple indice pour une apparence plus moderne.

  • android:selectAllOnFocus — sélectionne tout le texte lors de la prise de focus (utile pour les champs de recherche).
  • android:maxLength — limite le nombre de caractères saisis, en tronquant l'excédent.
  • android:lines — définit une hauteur fixe du champ en lignes (contrairement à minLines).
  • android:gravity — alignement du texte dans le champ : left, center, top, etc.
xml
                <!-- EditText in XML layout -->
@+id/etEmail
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter email"
android:inputType="textEmailAddress"
android:maxLines="1"
android:importantForAutofill="yes" />

Modes de saisie et inputType

L'attribut inputType détermine le type de clavier qui sera affiché à l'utilisateur et les caractères autorisés pour la saisie. C'est un masque de bits où la classe de saisie (TYPE_CLASS_TEXT, TYPE_CLASS_NUMBER, TYPE_CLASS_PHONE) est combinée avec des modificateurs.

Chaque mode de saisie non seulement modifie la disposition du clavier mais affecte également le traitement du texte : en mode numérique, seuls les chiffres et les séparateurs décimaux sont autorisés, en mode e-mail, le symbole @ et les extensions de domaine sont disponibles, et en mode téléphone, les chiffres et les symboles +, #, * sont affichés. Le choix du bon inputType affecte considérablement l'expérience utilisateur — un clavier inapproprié oblige les utilisateurs à changer de mode, augmentant le temps de remplissage du formulaire de 30 à 50 %.

Selon les Directives Material Design (2025), il est recommandé d'utiliser l'inputType le plus spécifique pour chaque champ : textPassword pour les mots de passe, numberDecimal pour les prix, phone pour les numéros de téléphone, textMultiLine pour la saisie multiligne. Cela accélère le remplissage des formulaires et réduit les erreurs de saisie.

kotlin
// Configuration programmatique d'inputType
editText.inputType = InputType.TYPE_CLASS_TEXT or
    InputType.TYPE_TEXT_FLAG_CAP_SENTENCES or
    InputType.TYPE_TEXT_FLAG_AUTO_CORRECT

Écouteurs d'EditText : TextWatcher et OnEditorActionListener

TextWatcher est une interface pour suivre les modifications de texte dans EditText en temps réel. Elle contient trois méthodes : beforeTextChanged est appelée avant une modification, onTextChanged pendant la modification, afterTextChanged après l'achèvement de la modification du texte. TextWatcher est utilisé pour la validation des saisies, le comptage de caractères, la recherche et l'autocomplétion.

OnEditorActionListener gère les actions de l'utilisateur sur le clavier : appui sur Done (IME_ACTION_DONE), Search (IME_ACTION_SEARCH), Send (IME_ACTION_SEND), Next (IME_ACTION_NEXT) et autres. Cet écouteur est particulièrement utile pour organiser la navigation dans le formulaire — en appuyant sur Next, le focus se déplace automatiquement au champ suivant, et en appuyant sur Done, le clavier est masqué et l'envoi est effectué.

Selon le Blog des développeurs Android (2025), l'utilisation appropriée d'OnEditorActionListener avec l'attribut android:imeOptions permet de créer des formulaires intuitifs sans boutons d'envoi supplémentaires — l'utilisateur remplit les champs et appuie sur Done sur le clavier, ce qui déclenche la sauvegarde ou la recherche.

kotlin
// TextWatcher pour la validation d'e-mail
editText.addTextChangedListener(object : TextWatcher {
    override fun afterTextChanged(s: Editable?) {
        val isValid = Patterns.EMAIL_ADDRESS.matcher(s).matches()
        editText.error = if (isValid) null else "Invalid email format"
    }
})

// OnEditorActionListener pour l'envoi de formulaire
editText.setOnEditorActionListener { _, actionId, _ ->
    if (actionId == EditorInfo.IME_ACTION_DONE) {
        submitForm()
        true
    } else false
}

Exemples de code avec EditText

Examinons un exemple complet de création d'un écran de connexion utilisant EditText pour la saisie de l'e-mail et du mot de passe. Cet exemple montre la configuration de l'inputType, la validation via TextWatcher et la gestion de l'appui sur le bouton de connexion.

Mise en page XML de l'écran de connexion

xml
@+id/etLoginEmail
android:layout_width="match_parent"
android:hint="Email"
android:inputType="textEmailAddress"
android:maxLines="1" />

@+id/etLoginPassword
android:layout_width="match_parent"
android:hint="Password"
android:inputType="textPassword"
android:maxLines="1" />

Configuration programmatique d'EditText

kotlin
class LoginFragment : Fragment() {
    private lateinit var etEmail: EditText
    private lateinit var etPassword: EditText

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        etEmail = view.findViewById(R.id.etLoginEmail)
        etPassword = view.findViewById(R.id.etLoginPassword)

        etEmail.addTextChangedListener(emailWatcher)
        etPassword.setOnEditorActionListener { _, actionId, _ ->
            if (actionId == EditorInfo.IME_ACTION_DONE) {
                performLogin()
                true
            } else false
        }
    }
}

Stylisation d'EditText

EditText prend en charge la personnalisation via les attributs XML, les thèmes et les styles. Vous pouvez modifier la couleur du texte, la couleur de l'indice, la couleur du soulignement (backgroundTint), le style de police, la taille du texte et bien plus encore. Material Components fournit le thème MaterialComponents.EditText avec des attributs personnalisés incluant boxStrokeColor, boxBackgroundColor et endIconMode.

Pour modifier la couleur du soulignement d'EditText, utilisez l'attribut android:backgroundTint qui définit la couleur pour les états par défaut et de focus. Dans Material Design, la couleur du soulignement est gérée via le colorPrimary du thème. Pour une personnalisation complète, vous pouvez créer un drawable personnalisé pour l'arrière-plan dans le dossier res/drawable.

StyleAttributRésultat
Couleur du texteandroid:textColorModifie la couleur du texte saisi
Couleur de l'indiceandroid:textColorHintModifie la couleur du texte indicatif
Soulignementandroid:backgroundTintModifie la couleur de la ligne sous le champ
Taille de policeandroid:textSizeDéfinit la taille du texte en sp
Policeandroid:fontFamilyApplique une police personnalisée

Pour créer un style cohérent pour tous les champs EditText dans votre application, il est recommandé de définir un style global dans le thème. Material Design propose le style Widget.MaterialComponents.TextInputLayout.OutlinedBox, qui est automatiquement appliqué à tous les champs de saisie utilisant TextInputLayout. Cela garantit une apparence cohérente sans dupliquer les attributs dans chaque mise en page.

Questions fréquentes

Quelle est la différence entre EditText et TextView ?

EditText hérite de TextView et ajoute des capacités d'édition de texte. TextView affiche uniquement le texte, tandis qu'EditText permet à l'utilisateur de saisir, supprimer et modifier le contenu. EditText prend également en charge inputType, TextWatcher, la gestion du curseur et d'autres fonctions liées à la saisie de données.

Comment restreindre certains caractères dans EditText ?

Utilisez InputFilter — une interface pour filtrer les caractères saisis. EditText prend en charge la définition d'un tableau de filtres via la méthode setFilters(). Par exemple, InputFilter.LengthFilter limite la longueur du texte, tandis qu'un InputFilter personnalisé peut restreindre des caractères spécifiques, des expressions régulières ou des plages Unicode.

Comment obtenir le texte d'EditText dans le code ?

Appelez editText.text.toString() en Kotlin ou editText.getText().toString() en Java. La propriété text retourne Editable, qui est converti en String via toString(). Vérifiez toujours les valeurs nulles et vides avant d'utiliser le texte, en particulier dans les formulaires avec des champs obligatoires.

Comment rendre EditText multiligne ?

Définissez l'attribut android:inputType="textMultiLine" ou ajoutez programmatiquement le drapeau InputType.TYPE_TEXT_FLAG_MULTI_LINE. En mode multiligne, EditText permet les sauts de ligne via Entrée et s'agrandit automatiquement en hauteur. Utilisez android:maxLines ou android:minLines pour limiter la hauteur.

Comment désactiver EditText pour l'édition ?

Définissez l'attribut android:enabled="false" ou appelez editText.isEnabled = false dans le code. Un EditText désactivé ne répond pas au toucher, ne peut pas obtenir le focus et s'affiche en gris (état désactivé). Une alternative consiste à utiliser android:focusable="false", qui désactive la saisie mais conserve l'apparence normale.

Résumé

  • EditText est le composant de saisie de texte de base dans Android, une sous-classe de TextView avec prise en charge de l'édition.
  • inputType détermine le mode du clavier et les caractères autorisés : texte, nombre, e-mail, téléphone, mot de passe.
  • TextWatcher permet de suivre les modifications de texte en temps réel pour la validation et l'autocomplétion.
  • OnEditorActionListener gère les actions du clavier : Done, Search, Next, Send.
  • InputFilter restreint les caractères de saisie et la longueur du texte via des filtres personnalisés.
  • Attributs comme hint, maxLines, maxLength, textColorHint configurent le comportement et l'apparence.
  • Material Design via TextInputLayout offre une apparence moderne avec des étiquettes flottantes et des erreurs.

Nous développerons une application mobile clé en main

IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.

Discuter du projet

Lisez aussi