2009-11-04 6 views
11

Avec le clavier physique, vous pouvez attraper touches avec un KeyListener, quelque chose comme:Touche de saisie enfoncée avec le clavier virtuel dans Android?

myEditText.setOnKeyListener(new OnKeyListener() { 
    @Override 
    public boolean onKey(View v, int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_ENTER) { 
      /* do something */ 
     } 
    } 
}); 

Est-ce que quelqu'un sait comment faire (ou similaire) avec le clavier virtuel?

+3

Dont vous pensez que ce serait une meilleure idée de partager la meilleure façon que vous avez trouvé, je veux dire que je viens ici demander de l'aide, trouver la réponse à votre auto et ne donne pas la réponse, plus donner et moins prenez je pense;) – Spider

Répondre

24

Jusqu'à présent, je n'ai trouvé aucun auditeur pour le clavier virtuel dans Android. J'ai trouvé une solution alternative, c'est-à-dire que j'ai utilisé l'événement TextChanged pour récupérer la valeur des clés entrées dans le texte d'édition.

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

} 
+2

S'il n'y a pas de texte entré dans editText? Comment pensez-vous gérer la suppression des clés? – atasoyh

Questions connexes