Alors que la plupart des gens ont répondu directement à la question, je voulais en dire plus sur le concept sous-jacent. Tout d'abord, j'ai été attiré l'attention de l'IME lorsque j'ai créé une activité de connexion par défaut. Il a généré du 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 devez déjà être familiarisé avec l'attribut inputType. Cela informe simplement Android du type de texte attendu, comme une adresse e-mail, un mot de passe ou un numéro de téléphone. La liste complète des valeurs possibles est disponible ici .
C'était, cependant, l'attribut imeOptions="actionUnspecified"
dont je ne comprenais pas le but. Android vous permet d'interagir avec le clavier qui apparaît du bas de l'écran lorsque le texte est sélectionné à l'aide de InputMethodManager
. Dans le coin inférieur du clavier, il y a un bouton, généralement il dit "Suivant" ou "Terminé", selon le champ de texte actuel. Android vous permet de personnaliser cela en utilisant android:imeOptions
. Vous pouvez spécifier un bouton "Envoyer" ou "Suivant". La liste complète peut être trouvée ici .
Avec cela, vous pouvez ensuite écouter les pressions sur le bouton d'action en définissant un TextView.OnEditorActionListener
pour l' 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;
}
});
Maintenant, dans mon exemple, j'avais l' android:imeOptions="actionUnspecified"
attribut. Ceci est utile lorsque vous souhaitez essayer de vous connecter à un utilisateur lorsqu'il appuie sur la touche Entrée. Dans votre activité, vous pouvez détecter cette balise, puis tenter de vous connecter:
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;
}
});