Chaque champ de texte nécessite un certain type de saisie de texte, comme une adresse e-mail, un numéro de téléphone ou du texte brut. Vous devez spécifier le type d'entrée pour chaque champ de texte dans votre application afin que le système affiche la méthode de saisie logicielle appropriée, telle qu'un clavier à l'écran.
En plus des types de boutons disponibles avec un mode de saisie, vous pouvez spécifier des comportements tels que si le mode de saisie fournit des suggestions orthographiques, met en majuscules les nouvelles phrases et remplace les un bouton de retour chariot avec un bouton d'action tel que Done (Terminé) ou Next (Suivant). Cette page explique comment pour spécifier ces caractéristiques.
Spécifier le type de clavier
Déclarez toujours la méthode de saisie pour vos champs de texte en ajoutant la méthode
android:inputType
à la variable
<EditText>
.
Par exemple, si vous souhaitez utiliser un mode de saisie pour saisir un numéro de téléphone, utilisez
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 correspond à un mot de passe, utilisez la valeur "textPassword"
afin que le champ de texte
masque 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
,
et vous pouvez combiner certaines valeurs pour spécifier l'apparence du mode de saisie et des valeurs
comportements.
Activer les suggestions orthographiques et d'autres comportements
L'attribut android:inputType
vous permet de spécifier différents comportements pour l'entrée
. Plus important encore, si votre champ de texte est destiné à la saisie de texte de base (par exemple,
SMS : activez la correction orthographique automatique avec le "textAutoCorrect"
.
Vous pouvez combiner différents comportements et styles de mode de saisie avec la
android:inputType
. Par exemple, voici comment créer un champ de texte
met en majuscule le 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 méthodes de saisie logicielle
fournissent un bouton d'action utilisateur dans le coin inférieur
le champ de texte actuel. Par défaut, le système utilise ce bouton pour passer à l'étape Suivant ou
l'action Terminé, sauf si votre champ de texte accepte le texte de plusieurs lignes (par exemple,
android:inputType="textMultiLine"
, auquel cas le bouton d'action est un chariot.
retour. Cependant, vous pouvez spécifier d'autres actions qui pourraient être plus appropriées pour votre champ de texte,
par exemple Send ou Go.
Pour spécifier le bouton d'action du clavier, utilisez les touches
android:imeOptions
avec une valeur d'action telle que "actionSend"
ou "actionSearch"
. 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 le
Classe EditorInfo
,
tels que
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 qu'ils saisissent du texte, vous pouvez utiliser une sous-classe de
EditText
a appelé
AutoCompleteTextView
Pour implémenter la saisie semi-automatique, vous devez spécifier une
Adapter
qui fournit le texte
des suggestions. Plusieurs adaptateurs sont disponibles, en fonction de l'origine des données, par exemple
à partir d'une base de données ou d'un tableau.
La procédure suivante explique comment configurer un AutoCompleteTextView
qui
fournit des suggestions à partir d'un tableau en utilisant
ArrayAdapter
:
- Ajoutez
AutoCompleteTextView
à votre mise en page. Voici une mise en page avec uniquement le 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 votre
Activity
ouFragment
, utilisez le code suivant pour spécifiez 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 ducountries_array
à un tableauTextView
existant dans 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 au
AutoCompleteTextView
en appelantsetAdapter()