Bien que la plupart des gens aient répondu directement à la question, je voulais approfondir le concept qui se cache derrière. Tout d'abord, l'attention d'IME a été attirée sur moi lorsque j'ai créé une activité de connexion par défaut. Il a généré un certain code pour moi qui comprenait ce qui suit :
<EditText
android:id="@+id/password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/prompt_password"
android:imeActionId="@+id/login"
android:imeActionLabel="@string/action_sign_in_short"
android:imeOptions="actionUnspecified"
android:inputType="textPassword"
android:maxLines="1"
android:singleLine="true"/>
Vous devriez déjà être familiarisé avec l'attribut inputType. Celui-ci informe simplement Android du type de texte attendu, tel qu'une adresse électronique, un mot de passe ou un numéro de téléphone. La liste complète des valeurs possibles se trouve à l'adresse suivante aquí .
C'était, cependant, l'attribut imeOptions="actionUnspecified"
que je ne comprenais pas son but. Android vous permet d'interagir avec le clavier qui s'affiche en bas de l'écran lorsque du texte est sélectionné en utilisant la fonction InputMethodManager
. Dans le coin inférieur du clavier, il y a un bouton, qui indique généralement "Suivant" ou "Terminé", selon le champ de texte en cours. Android vous permet de le personnaliser en utilisant android:imeOptions
. Vous pouvez spécifier un bouton "Envoyer" ou "Suivant". La liste complète peut être trouvée aquí .
Avec cela, vous pouvez ensuite écouter les pressions sur le bouton d'action en définissant une fonction TextView.OnEditorActionListener
pour le EditText
élément. Comme dans votre exemple :
editText.setOnEditorActionListener(new EditText.OnEditorActionListener() {
@Override
public boolean onEditorAction(EditText v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_DONE) {
//do here your stuff f
return true;
}
return false;
}
});
Dans mon exemple, j'avais android:imeOptions="actionUnspecified"
attribut. Ceci est utile lorsque vous voulez essayer de connecter un utilisateur lorsqu'il appuie sur la touche Entrée. Dans votre activité, vous pouvez détecter cette balise et tenter d'ouvrir une session :
mPasswordView = (EditText) findViewById(R.id.password);
mPasswordView.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView textView, int id, KeyEvent keyEvent) {
if (id == R.id.login || id == EditorInfo.IME_NULL) {
attemptLogin();
return true;
}
return false;
}
});
1 votes
Peut-être que OnKeyboardActionListener m'aidera à trouver un exemple de code ?