Comment envoyer un événement clé à un texte d'édition

Par exemple, envoyez une touche de rétro-espace au contrôle de texte d'édition pour supprimer un caractère ou envoyez un code char comme 112 pour ajouter un caractère dans le contrôle edittext par programme.

En fait, j'ai besoin d'une méthode comme

  • Android MediaRecorder en streaming
  • Liste des téléphones Android les plus populaires?
  • Comment créer un raccourci qui mène à une activité non-lanceur?
  • Comment lire la réponse HTTP via les sockets?
  • Android Google Admob: les ressources des services Google Play n'ont pas été trouvées
  • Pause la minuterie et continuez-la
  • void onKeyReceived(int keyCode) { // here I would like to append the keyCode to EditText, I know how to add a visible character, but what about some special keys, like arrow key, backspace key. } 

  • Colonne d'alignement droit dans la disposition de la table Android
  • Android - Barcode Scanning, Options? Zxing?
  • Barre d'état transparente et barre d'action Android
  • Comment trouver le compte Gmail associé à Android Market?
  • La configuration correcte du périphérique Eclipse / Android pour HTC Desire
  • La recherche de la barre d'action ne se ferme pas après la recherche
  • 10 Solutions collect form web for “Comment envoyer un événement clé à un texte d'édition”

    Pour envoyer une touche de rétro-éclairage simulée, appuyez sur un EditText, vous devez envoyer les deux pressions et les événements de sortie. Comme ça:

     mEditText.dispatchKeyEvent(new KeyEvent(0, 0, KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DEL, 0)); mEditText.dispatchKeyEvent(new KeyEvent(0, 0, KeyEvent.ACTION_UP, KeyEvent.KEYCODE_DEL, 0)); 

    Cela peut être utilisé pour envoyer n'importe quel autre code de clé, pas simplement supprimer.

    Votre question n'est pas claire, mais je pense que vous souhaitez modifier / ajouter du texte à une TextView lorsque certains boutons sont enfoncés. Dans l'affirmative, vous voulez une combinaison de certaines des réponses existantes.

     @Override public void onCreate(Bundle savedInstanceState) { ... (TextView) textView = (TextView) findViewById(R.id.myTextView); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { switch(keyCode) { case KeyEvent.KEYCODE_BACK: // user pressed the "BACK" key. Append "_back" to the text textView.append("_back"); return true; case KeyEvent.KEYCODE_DEL: // user pressed the "BACKSPACE" key. Append "_del" to the text textView.append("_del"); return true; default: return super.onKeyDown(keyCode, event); } } 

    Si vous avez super.onKeyDown(keyCode, event); true pour chaque cas, vous avez manipulé (comme ci-dessus) ou pour toujours retourner super.onKeyDown(keyCode, event); Après que votre déclaration de switch dépend de vos exigences exactes. Vérifiez la documentation pour le comportement de onKeyDown

    Si, au lieu d'ajouter du texte dans chaque cas, vous souhaitez supprimer un caractère ou déplacer le curseur, vous pouvez le faire dans chaque déclaration de case . Consultez la documentation TextView pour TextView les différentes méthodes que vous pouvez appeler. Consultez également la documentation KeyEvent pour obtenir une liste des clés que vous pouvez vérifier.

    Je pense que vous devez utiliser addTextChangedListener sur EditText .
    Reportez-vous à la réponse de l' entrée EditText avec l' édition Pattern android and Live Edit of Users

    Virsir, je suppose que vous êtes à la recherche d'envoi de clés à clé par programme.

    Pour cela, vous pouvez essayer d' expédier (KeyEvent.Callback receiver, KeyEvent.DispatcherState state, Object target) avec un exemple Back and other keys: trois histoires

    J'espère que cela pourra aider.

    Vérifiez les événements clés dans votre activité. Par exemple, ce code écoute la pression back :

     @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK)) { finish(); } return super.onKeyDown(keyCode, event); } 

    Utilisez simplement la méthode setText pour ce faire. Si vous voulez simuler un back-space, vous pouvez faire quelque chose comme ça.

     String curText = mEditText.getText(); if(!curText.equals("")){ mEditText.setText(curText.subString(0, curText.length - 1)); } 

    Pour simuler une clé de recul, juste un code publicitaire

     editText.setText(editText.getText().substring(0,editText.getText().length()-1)) getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); 

    Pour simuler l'ajout d'un personnage, mettez le code

     editText.setText(editText.getText() + (char) charCode) 

    GetWindow (). SetSoftInputMode (WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);

    Jetez un oeil à cet article: create-input-method.html . Fondamentalement, vous pouvez envoyer manuellement des KeyEvents ou vous pouvez edit and commit text around the cursor KeyEvents manuellement du edit and commit text around the cursor dans la vue d' Input View l'application. Ceux-ci sont tous effectués via InputConnection votre IME.

    J'espère que cela t'aides,

    Si vous voulez un écouteur de clics, la meilleure façon de le faire est la suivante:

     View textfield = findViewById(R.id.textfield); textfield .setOnClickListener(new View.OnClickListener() { public void onClick(View v) { /*your code for the click event here*/ }}); 

    Si vous voulez un bouton de recul, procédez comme suit:

     public void backSpace() { EditText textfield = (EditText)findViewById(R.id.textfield); try { textfield.getText().delete(textfield.getSelectionEnd() - 1, textfield.getSelectionStart()); } catch (Exception e) { try { textfield.getText().delete(textfield.length() - 1, textfield.length()); } catch (Exception myException) { //textfield.getText().delete(textfield.length(), textfield.length() - 1); } } } 

    Si vous souhaitez ajouter un caractère dans EditText, procédez comme suit:

     EditText textfield = (EditText)findViewById(R.id.textfield); textfield.setText(textfield.getText().concat("112")); 

    Essayez d'implémenter l'interface TextWatcher.

    Il dispose de 3 méthodes dont vous devez remplacer.

     public void afterTextChanged(Editable s) { Log.v("afterTextChanged","here"); } public void beforeTextChanged(CharSequence s, int start, int count, int after) { Log.v("beforeTextChanged","here"); } public void onTextChanged(CharSequence s, int start, int before, int count) { } 

    Je pense que cela fonctionnera.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.