Android-Erkennung Fertig Tastendruck für OnScreen-Tastatur

111

Kann festgestellt werden, wann die DoneTaste der Bildschirmtastatur gedrückt wurde?

pankajagarwal
quelle

Antworten:

276

Ja, es ist möglich:

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;
    }
});

Beachten Sie, dass Sie die folgenden Bibliotheken importieren müssen:

import android.view.KeyEvent;
import android.view.inputmethod.EditorInfo;
import android.widget.TextView;
Szabolcs Berecz
quelle
Danke, du hast mir einen guten Ausgangspunkt gegeben. Ich musste EditorInfo.IME_ACTION_SEARCHstattdessen nur den Objektivsuchknopf verwenden.
TechNyquist
Hallo, ist das mit ButterKnife möglich? @ Mikeyaworski @ SzabolcsBerecz
Maulik Dodia
1
@ MaulikDodia Sie können Butterknife @OnEditorAction ()
Ridcully
Danke. Ich werde damit @ Ridcully
Maulik Dodia
3

Eine Editor-Info ist die nützlichste Klasse, wenn Sie mit jeder Art von Benutzereingabe in Ihrer Android-Anwendung umgehen müssen. Zum Beispiel bei Anmelde- / Registrierungs- / Suchvorgängen können wir es für eine genauere Tastatureingabe verwenden. Eine Editor-Infoklasse beschreibt mehrere Attribute für Textbearbeitungsobjekte, die eine Eingabemethode direkt mit dem Bearbeiten von Textinhalten kommuniziert.

Sie können es mit IME_ACTION_DONE versuchen .

Diese Aktion führt eine DoneOperation aus, für die nichts eingegeben werden muss, und die IMEwird geschlossen.

Verwenden von 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
quelle
Wie gehe ich mit dem gleichen Problem mit der benutzerdefinierten Tastatur um?
Gaju Kollur
0

Mit Butterknife können Sie dies tun

@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
quelle