Android détecte la touche OK pour le clavier à l'écran

111

Est-il possible de détecter quand la Donetouche du clavier à l'écran a été enfoncée?

pankajagarwal
la source

Réponses:

276

Oui c'est possible:

editText = (EditText) findViewById(R.id.edit_text);

editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        if (actionId == EditorInfo.IME_ACTION_DONE) {
            // do your stuff here
        }
        return false;
    }
});

Notez que vous devrez importer les bibliothèques suivantes:

import android.view.KeyEvent;
import android.view.inputmethod.EditorInfo;
import android.widget.TextView;
Szabolcs Berecz
la source
Merci, vous m'avez donné un excellent point de départ. J'avais juste besoin d'utiliser EditorInfo.IME_ACTION_SEARCHle bouton de recherche d'objectif à la place.
TechNyquist
Salut, Est-ce possible avec ButterKnife? @ Mikeyaworski @ SzabolcsBerecz
Maulik Dodia
1
@MaulikDodia Vous pouvez utiliser @OnEditorAction de Butterknife ()
Ridcully
Merci. Je vais avec @ Ridcully
Maulik Dodia
3

Une information de l'éditeur est la classe la plus utile lorsque vous devez gérer n'importe quel type d'entrée utilisateur dans votre application Android. Par exemple, dans les opérations de connexion / enregistrement / recherche, nous pouvons l'utiliser pour une saisie au clavier plus précise. Une classe d'informations d'éditeur décrit plusieurs attributs pour un objet d'édition de texte qu'une méthode d'entrée communiquera directement avec le contenu de texte d'édition.

Vous pouvez essayer avec IME_ACTION_DONE .

Cette action effectue une Doneopération pour rien à saisir et leIME sera fermé.

Utilisation de setOnEditorActionListener

EditTextObj.setOnEditorActionListener(new TextView.OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        boolean handled = false;
        if (actionId == EditorInfo.IME_ACTION_DONE) {
            /* Write your logic here that will be executed when user taps next button */
            handled = true;
        }
        return handled;
    }
});
IntelliJ Amiya
la source
Comment gérer le même problème avec un clavier personnalisé?
Gaju Kollur
0

En utilisant Butterknife, vous pouvez le faire

@OnEditorAction(R.id.signInPasswordText)
boolean onEditorAction(TextView v, int actionId, KeyEvent event){
    if (actionId == EditorInfo.IME_ACTION_DONE || event.getKeyCode() == KeyEvent.KEYCODE_ENTER) {
        /* Write your logic here that will be executed when user taps next button */
    }
    return false;
}
Zayin Krige
la source