2016-10-09 5 views
2

J'essaie de capturer quelle touche est pressée sur un TextInputEditText (à partir de Material Design) et bien que j'appuie sur une touche du clavier, je n'arrive pas à entrer dans la méthode onKey. Quelqu'un pourrait-il m'aider?Enregistrement de touches pressées avec TextInputEditText dans Android

txtInputApo.setOnKeyListener(new View.OnKeyListener() { 
     @Override 
     public boolean onKey(View v, int keyCode, KeyEvent event) { 
      Log.i("onKey","true"); 
      if(event.getAction() == KeyEvent.ACTION_UP){ 
       switch (keyCode){ 
        case KeyEvent.KEYCODE_SPACE: 
         String Espaces = txtInputApo.getText().toString().replaceAll(" ", ""); 
         txtInputApo.setText(Espaces); 
         txtInputApo.setSelection(Espaces.length()); 
         break; 

       } 
      } 

      return false; 
     } 
    }); 

Merci!

Répondre

3

View.OnKeyListener a été principalement conçu pour l'entrée matérielle. La plupart du temps, il est préférable d'utiliser un TextWatcher à la place pour ce type de scénario (surveillance et modification des entrées utilisateur).

Vous pouvez faire quelque chose comme ceci pour obtenir le résultat souhaité avec un TextWatcher:

TextWatcher watcher = new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

     } 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 

     } 

     @Override 
     public void afterTextChanged(Editable s) { 
      String editableString = s.toString(); 
      if (editableString.contains(" ")) { 
       final String spaceFreeString = editableString.replaceAll(" ", ""); 
       txtInputApo.setText(spaceFreeString); 
       txtInputApo.setSelection(spaceFreeString.length()); 
      } 
     } 
    }; 
    txtInputApo.addTextChangedListener(watcher); 
+0

Merci! J'ai essayé avec 'TextWatcher' avant, mais je dois aussi saisir la touche d'entrée et je ne savais pas comment faire. En tout cas je pense que je peux gérer avec cette solution. Je vous remercie! –