Tecla de captura pulsada con el teclado virtual en Android?
Con el teclado físico puede capturar las pulsaciones de teclas con un KeyListener , algo así como:
myEditText.setOnKeyListener(new OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_ENTER) { /* do something */ } } });
¿Alguien sabe cómo hacer esto (o similar) con el teclado virtual?
- EditText OnKeyListener no funciona
- Android: KeyListener para un EditText que no recibe claves
- Cómo manejar la tecla Intro usando TextWatcher en Android
- Android onKeyListener en EditText sólo responde a la tecla "Enter" cuando se pulsa dos veces
- Problema con el EditText de Android: KeyListener
- Coloque el cursor al final del texto en EditText
- Android onkey - dispatchKeyEvent sin disparar
- Escucha la tecla ENTER en Android
- Editar el oyente de clave de texto
- Android - Quiere restringir algunos charaters al edittext
Hasta ahora no he encontrado ningún oyente para el teclado virtual en android. Encontré una solución alternativa, es decir, utilicé el evento TextChanged para recuperar el valor de las claves introducidas en Editar texto.
import android.app.Activity; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.util.Log; import android.view.KeyEvent; import android.view.View; import android.view.View.OnKeyListener; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; public class ShowKeypad extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); EditText emailTxt = (EditText) findViewById(R.id.editText); emailTxt.addTextChangedListener(new TextWatcher() { public void afterTextChanged (Editable s){ Log.d("seachScreen", "afterTextChanged"); } public void beforeTextChanged (CharSequence s, int start, int count, int after) { Log.d("seachScreen", "beforeTextChanged"); } public void onTextChanged (CharSequence s, int start, int before, int count) { Log.d("seachScreen", s.toString()); } final TextView tv = (TextView)findViewById(R.id.tv); }); } }