Alors que la plupart des gens ont répondu à la question directement, je voulais en dire davantage sur le concept derrière elle.Tout d'abord, j'ai été attiré par l'attention d'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 devriez déjà être familier 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 peut être trouvée here.
Il était, cependant, l'attribut imeOptions="actionUnspecified"
que je n'ai pas compris son but. Android vous permet d'interagir avec le clavier qui apparaît à partir du bas de l'écran lorsque le texte est sélectionné en utilisant le 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 un bouton "Suivant". La liste complète peut être trouvée here. Par la suite, vous pouvez écouter les pressions sur le bouton d'action en définissant un TextView.OnEditorActionListener
pour l'élément EditText
. 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 android:imeOptions="actionUnspecified"
attribut. Ceci est utile lorsque vous voulez essayer de vous connecter à un utilisateur quand il appuie sur la touche Entrée. Dans votre activité, vous pouvez détecter cette balise, puis tenter la connexion:
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;
}
});
peut être OnKeyboardActionListener m'aider un exemple de code ?? –