Android detecta la pulsación de la tecla Listo para el teclado en pantalla

111

¿Es posible detectar cuándo Donese presionó la tecla del teclado en pantalla?

pankajagarwal
fuente

Respuestas:

276

Sí, es posible:

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

Tenga en cuenta que deberá importar las siguientes bibliotecas:

import android.view.KeyEvent;
import android.view.inputmethod.EditorInfo;
import android.widget.TextView;
Szabolcs Berecz
fuente
Gracias, me diste un gran punto de partida. Solo necesitaba usar EditorInfo.IME_ACTION_SEARCHel botón de búsqueda de lentes en su lugar.
TechNyquist
Hola, ¿Es esto posible con ButterKnife? @ Mikeyaworski @ SzabolcsBerecz
Maulik Dodia
1
@MaulikDodia Puedes usar @OnEditorAction () de butterknife
Ridcully
Gracias. Lo haré con eso @ Ridcully
Maulik Dodia
3

Una información del editor es la clase más útil cuando tienes que lidiar con cualquier tipo de entrada de usuario en tu aplicación de Android. Por ejemplo, en operaciones de inicio de sesión / registro / búsqueda, podemos usarlo para una entrada de teclado más precisa. Una clase de información de editor describe varios atributos para el objeto de edición de texto que un método de entrada se comunicará directamente con el contenido de texto de edición.

Puedes probar con IME_ACTION_DONE .

Esta acción realiza una Doneoperación para que no se ingrese nada y elIME se cerrará.

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
fuente
¿Cómo manejar el mismo problema con el teclado personalizado?
Gaju Kollur
0

Usando Butterknife puedes hacer esto

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