Chaque champ de texte attend un certain type d'entrée de texte, tel qu'une adresse e-mail, un numéro de téléphone ou du texte brut. Vous devez spécifier le type de saisie pour chaque champ de texte de votre application afin que le système affiche la méthode de saisie logicielle appropriée, telle qu'un clavier à l'écran.
Au-delà du type de boutons disponible avec un mode de saisie, vous pouvez spécifier des comportements, par exemple si le mode de saisie fournit des suggestions orthographiques, met des majuscules en majuscules et remplace le bouton de retour chariot par un bouton d'action tel que Done (Terminé) ou Next (Suivant). Cette page explique comment spécifier ces caractéristiques.
Spécifier le type de clavier
Déclarez toujours le mode de saisie pour vos champs de texte en ajoutant l'attribut android:inputType
à l'élément <EditText>
.
Par exemple, si vous souhaitez un mode de saisie pour saisir un numéro de téléphone, utilisez la valeur "phone"
:
<EditText android:id="@+id/phone" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="@string/phone_hint" android:inputType="phone" />
Si le champ de texte est destiné à un mot de passe, utilisez la valeur "textPassword"
pour que le champ de texte dissimule l'entrée utilisateur:
<EditText android:id="@+id/password" android:hint="@string/password_hint" android:inputType="textPassword" ... />
Plusieurs valeurs possibles sont documentées avec l'attribut android:inputType
. Vous pouvez combiner certaines d'entre elles pour spécifier l'apparence du mode de saisie et des comportements supplémentaires.
Activer les suggestions orthographiques et d'autres comportements
L'attribut android:inputType
vous permet de spécifier différents comportements pour la méthode de saisie. Plus important encore, si votre champ de texte est destiné à la saisie de texte de base (pour un message texte, par exemple), activez la correction orthographique automatique avec la valeur "textAutoCorrect"
.
Vous pouvez combiner différents comportements et styles de méthode de saisie avec l'attribut android:inputType
. Par exemple, voici comment créer un champ de texte qui met une majuscule au premier mot d'une phrase et corrige automatiquement les fautes d'orthographe:
<EditText android:id="@+id/message" android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType= "textCapSentences|textAutoCorrect" ... />
Spécifier l'action du mode de saisie
La plupart des modes de saisie symboliques fournissent un bouton d'action utilisateur dans le coin inférieur, adapté au champ de texte actuel. Par défaut, le système utilise ce bouton pour une action Next (Suivant) ou Done (Terminé), sauf si votre champ de texte accepte le texte multiligne (comme avec android:inputType="textMultiLine"
), auquel cas le bouton d'action est un retour chariot. Toutefois, vous pouvez spécifier d'autres actions qui pourraient être plus appropriées pour votre champ de texte, telles que Send (Envoyer) ou Go (OK).
Pour spécifier le bouton d'action du clavier, utilisez l'attribut android:imeOptions
avec une valeur d'action telle que "actionSend"
ou "actionSearch"
. Par exemple :
<EditText android:id="@+id/search" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="@string/search_hint" android:inputType="text" android:imeOptions="actionSend" />
Vous pouvez ensuite écouter les pressions sur le bouton d'action en définissant un TextView.OnEditorActionListener
pour l'élément EditText
. Dans votre écouteur, répondez à l'ID d'action IME approprié défini dans la classe EditorInfo
, par exemple IME_ACTION_SEND
, comme illustré dans l'exemple suivant:
Kotlin
findViewById<EditText>(R.id.search).setOnEditorActionListener { v, actionId, event -> return@setOnEditorActionListener when (actionId) { EditorInfo.IME_ACTION_SEND -> { sendMessage() true } else -> false } }
Java
EditText editText = (EditText) findViewById(R.id.search); editText.setOnEditorActionListener(new OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { boolean handled = false; if (actionId == EditorInfo.IME_ACTION_SEND) { sendMessage(); handled = true; } return handled; } });
Fournir des suggestions de saisie semi-automatique
Si vous souhaitez fournir des suggestions aux utilisateurs au fur et à mesure de leur saisie, vous pouvez utiliser une sous-classe de EditText
appelée AutoCompleteTextView
.
Pour implémenter la saisie semi-automatique, vous devez spécifier un Adapter
qui fournit les suggestions de texte. Plusieurs adaptateurs sont disponibles en fonction de la provenance des données (par exemple, une base de données ou un tableau).
La procédure suivante explique comment configurer un AutoCompleteTextView
qui fournit des suggestions à partir d'un tableau à l'aide de ArrayAdapter
:
- Ajoutez
AutoCompleteTextView
à votre mise en page. Voici une mise en page ne contenant que le champ de texte :<?xml version="1.0" encoding="utf-8"?> <AutoCompleteTextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/autocomplete_country" android:layout_width="fill_parent" android:layout_height="wrap_content" />
- Définissez le tableau contenant toutes les suggestions de texte. Par exemple, voici un tableau de noms de pays :
<?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="countries_array"> <item>Afghanistan</item> <item>Albania</item> <item>Algeria</item> <item>American Samoa</item> <item>Andorra</item> <item>Angola</item> <item>Anguilla</item> <item>Antarctica</item> ... </string-array> </resources>
- Dans
Activity
ouFragment
, utilisez le code suivant pour spécifier l'adaptateur qui fournit les suggestions:Kotlin
// Get a reference to the AutoCompleteTextView in the layout. val textView = findViewById(R.id.autocomplete_country) as AutoCompleteTextView // Get the string array. val countries: Array<out String> = resources.getStringArray(R.array.countries_array) // Create the adapter and set it to the AutoCompleteTextView. ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, countries).also { adapter -> textView.setAdapter(adapter) }
Java
// Get a reference to the AutoCompleteTextView in the layout. AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autocomplete_country); // Get the string array. String[] countries = getResources().getStringArray(R.array.countries_array); // Create the adapter and set it to the AutoCompleteTextView. ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, countries); textView.setAdapter(adapter);
Dans l'exemple précédent, un nouveau
ArrayAdapter
est initialisé pour lier chaque élément du tableau de chaînescountries_array
à unTextView
qui existe dans la mise en pagesimple_list_item_1
. Il s'agit d'une mise en page fournie par Android qui fournit une apparence standard pour le texte d'une liste. -
Attribuez l'adaptateur à
AutoCompleteTextView
en appelantsetAdapter()
.