Android detecta o pressionamento de tecla concluído para teclado na tela

111

É possível detectar quando a Donetecla do teclado na tela foi pressionada?

Pankajagarwal
fonte

Respostas:

276

Sim, é possível:

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

Observe que você terá que importar as seguintes bibliotecas:

import android.view.KeyEvent;
import android.view.inputmethod.EditorInfo;
import android.widget.TextView;
Szabolcs Berecz
fonte
Obrigado, você me deu um ótimo ponto de partida. Só precisei usar EditorInfo.IME_ACTION_SEARCHo botão de pesquisa da lente.
TechNyquist
Olá, isso é possível com ButterKnife? @ Mikeyaworski @ SzabolcsBerecz
Maulik Dodia
1
@MaulikDodia Você pode usar @OnEditorAction de butterknife ()
Ridcully
Te agradece. Eu vou com ele @ Ridcully
Maulik Dodia
3

Um Editor Info é a classe mais útil quando você tem que lidar com qualquer tipo de entrada do usuário em seu aplicativo Android. Por exemplo, em operações de login / registro / pesquisa, podemos usá-lo para uma entrada de teclado mais precisa. Uma classe de informação do editor descreve vários atributos para o objeto de edição de texto que um método de entrada estará se comunicando diretamente com o conteúdo de texto de edição.

Você pode tentar com IME_ACTION_DONE .

Esta ação executa uma Doneoperação sem entrada de dados e o IMEserá fechado.

Usando 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
fonte
Como lidar com o mesmo problema com o teclado personalizado?
Gaju Kollur
0

Usando Butterknife você pode fazer isso

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