I. Comment adapter le clavier à vos besoins

Dans votre application, l'utilisateur aura peut être besoin de saisir quelques données de types différents. Dans ce cas, il faut faciliter le travail à l'utilisateur en faisant apparaître un clavier en fonction du type de champ à remplir (adresse mail, numéro de téléphone etc.). Pour cela dans votre "EditText", il faut simplement spécifier l'option android:inputType. Voici les différentes valeurs disponibles :

  • text (par défaut) : clavier normal ;
  • textCapCharacters : clavier tout en majuscule ;
  • textCapWords : première lettre automatiquement en majuscule ;
  • textCapSentences : phrase en majuscule ;
  • textAutoCorrect : activer la correction automatique ;
  • textAutoComplete : activer la correction automatique forcée ;
  • textMultiLine : texte sur plusieurs lignes ;
  • textNoSuggestions : pas de suggestion de correction ;
  • textUri : saisie d'une URL Web ;
  • textEmailAddress : adresse mail ;
  • textEmailSubject : sujet de mail ;
  • textShortMessage : active le raccourci smiley sur le clavier ;
  • textPersonName : saisie du nom d'une personne (affichage de speach to text en bas à gauche du clavier) ;
  • textPostalAddress : saisie d'une adresse postale (affichage de speach to text en bas à gauche du clavier) ;
  • textPassword : saisie de mot de passe ;
  • textVisiblePassword : saisie d'un mot de passe visible ;
  • textWebEditText : texte Web (activation de raccourci tabulation et speach to text) ;
  • number / numberSigned / numberDecimal / phone / datetime / date / time : clavier numérique.

Vous pouvez mettre plusieurs valeurs en les séparant simplement par des "|".

II. Où est le champ suivant ?

Quand vous avez un clavier qui s'affiche, vous pouvez avoir l'envie qu'il soit lié au champ d'après, par exemple qu'un bouton "suivant" s'affiche au lieu du bouton "retour à la ligne". Par défaut la valeur est "Suivant", sinon "Ok" si vous êtes sur le dernier champ.
Mais vous pouvez choisir l'option que vous souhaitez voir affichée à l'aide de l'option android:imeOptions. Voici les différentes options disponibles :

  • actionUnspecified : aucune spécification particulière, l'éditeur affichera ce qui lui semble le plus logique ;
  • actionNone : aucune spécification particulière ;
  • actionGo : affiche la valeur "Go" ;
  • actionSearch : affiche la valeur "recherche" ;
  • actionSend : affiche la valeur "envoyer" ;
  • actionNext : affiche la valeur "suivant" ;
  • actionDone : affiche la valeur "ok".

Vous pouvez récupérer l'action qui a été sélectionnée afin d'exécuter une action spécifique à l'aide de setOnEditorActionListener(). Vous allez recevoir un événement du type IME_ACTION_SEND quand le bouton "envoyer" sera cliqué

III. Mon clavier cache ma vue

Vous pouvez rencontrer un problème quand l'utilisateur clique sur un EditText, celui-là est caché par le clavier ou alors ce sont les champs en dessous qui ne sont plus visibles. Pour résoudre ce problème il vous faut jouer avec deux options :

  • dans la partie correspondante à votre vue dans l'AndroidManifest.xml, vous pouvez ajouter android:windowSoftInputMode="adjustResize" qui vous permet de redimensionner votre vue quand le clavier apparaît. Pour plus de détails vous pouvez regarder sur le site officiel d'Android ;
  • vous pouvez combiner cette option avec le poids des différents éléments pour votre vue : android:weight.

IV. Conclusion

Ce tutoriel se finit ici en espérant qu'il vous a aidé à comprendre le fonctionnement du clavier sous Android et comment faciliter l'interaction entre l'utilisateur et votre application.

V. Remerciements

Je tiens à remercier tout particulièrement Feanorin qui a mis ce tutoriel au format Developpez.com.
Merci également à _Max_ d'avoir pris le temps de le relire et de le corriger.

VI. Liens