28 votes

Comment puis-je mettre à jour l'affichage du bouton d'action de l'éditeur à la volée?

Ma question est: Comment puis-je mettre à jour l'affichage du bouton d'action de la douce clavier à la volée?

Un autre post semble être sur la modification de l'éditeur de l'action AVANT que le clavier est affiché: Android: ne Peut pas comprendre comment utiliser setImeActionLabel. Je voudrais changer le clavier bouton d'action ALORS qu'il est illustré.

J'ai partiellement réussi: - Je peux modifier l'action à l'aide de: editText.setImeOptions(EditorInfo.IME_ACTION_GO); - Je peux aussi redessiner le clavier à l'aide de: InputMethodManager.restartInput(editText); Je ne ce à l'aide de TextWatcher.afterTextChanged. - Cependant, j'ai un problème avec cela. Si j'appuie sur une touche, en plus de cela le clavier indique quelle touche a été enfoncée. Mais quand je l'appelle restartInput(...), ce cache également le point de vue qui montre quelle touche a été enfoncée. Cela semble un comportement normal pour moi, mais j'ai besoin d'un moyen de contourner cela.

L'extension de EditText et dominante onKeyUp n'est pas une bonne idée, voir: https://groups.google.com/forum/?fromgroups#!topic/android-développeurs/RIxGfx5qOjM.

Le KeyboardView classe a exactement ce dont j'ai besoin (invalidateKey), mais je pense que c'est uniquement accessible lorsque vous créez votre propre méthode d'entrée.

Quiconque de certains ont de meilleures idées?

1voto

Maher Abuthraa Points 736

Merci d'essayer d'être plus précis quand vous décrire ce que vous voulez faire ... j'avais besoin de lire votre post, beaucoup de temps pour être en mesure de comprendre votre demande ..

Donc, ce que vous voulez faire est de savoir comment réagir à n'importe quelle touche enfoncée sur le clavier et afficher les infos à ce sujet dans l'action de la touche sur le clavier. Si ce n'est pas votre cible plz pour expliquer avec plus de...

Si oui, alors je crois que vous auriez besoin d'utiliser d'autres EditText ( non visible ) permet d'appel et0. après avoir terminé l'insertion d'une lettre ou de n'importe quel motif vous définir, par le biais ontextchanged dans votre texte à modifier, changer le focus et0.. si vous pouvez modifier le actionKey.. et puis envoyer le focus de votre editText .. de sorte que vous pouvez thread ou timertask, ou de tout moyen de gérer cette modification temporaire de l'accent et de et0 .. ici, il n'est pas nécessaire de redémarrer l'entrée.

espère que cela va vous aider ..

1voto

Alex Points 360

Avez-vous essayé de modifier /system/usr/keychars/default.kcm à la volée avant d'appeler votre code de rafraîchissement? (le nom du fichier peut être différent selon la version d'Android).

Là, vous êtes autorisé à définir non seulement les caractères de sortie des touches, mais également les valeurs d'affichage des touches. Je ne l'ai pas essayé, cela pourrait également entraîner un retard, mais ça vaut le coup d'essayer.

1voto

ANGARAJ Points 11

Cela devrait vous être très utile.

 EditText in = new EditText(this); 
in.addTextChangedListener(new TextWatcher() { 
    public void onTextChanged(CharSequence cs, int s, int b, int c) { 
        Log.i("Key:", cs.toString()); 
    }
    public void afterTextChanged(Editable editable) {} 
    public void beforeTextChanged(CharSequence cs, int i, int j, int k) {} 
});
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X