Android wykrywa Gotowe naciśnięcie klawisza na klawiaturze ekranowej

111

Czy można wykryć Donenaciśnięcie klawisza klawiatury ekranowej?

pankajagarwal
źródło

Odpowiedzi:

277

Tak to mozliwe:

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

Pamiętaj, że będziesz musiał zaimportować następujące biblioteki:

import android.view.KeyEvent;
import android.view.inputmethod.EditorInfo;
import android.widget.TextView;
Szabolcs Berecz
źródło
Dziękuję, dałeś mi świetny punkt wyjścia. EditorInfo.IME_ACTION_SEARCHZamiast tego musiałem użyć przycisku wyszukiwania obiektywu.
TechNyquist
Cześć, czy to możliwe z ButterKnife? @ Mikeyaworski @ SzabolcsBerecz
Maulik Dodia
1
@MaulikDodia You can use butterknife's @OnEditorAction ()
Ridcully
Dzięki Ci. Zrobię to @ Ridcully
Maulik Dodia
3

Informacje edytora to najbardziej przydatna klasa, gdy masz do czynienia z dowolnym rodzajem danych wejściowych użytkownika w aplikacji na Androida. Na przykład w operacjach logowania / rejestracji / wyszukiwania możemy go użyć do dokładniejszego wprowadzania danych z klawiatury. Klasa informacyjna edytora opisuje kilka atrybutów obiektu edycji tekstu, które metoda wprowadzania będzie bezpośrednio komunikować z zawartością tekstu edycji.

Możesz spróbować z IME_ACTION_DONE .

Ta akcja wykonuje Doneoperację bez wprowadzania danych i IMEzostanie zamknięty.

Korzystanie z 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
źródło
Jak poradzić sobie z tym samym problemem z niestandardową klawiaturą?
Gaju Kollur
0

Możesz to zrobić za pomocą Butterknife

@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
źródło