EditText OnKeyListener ne fonctionne pas
Je sais ce/question similaire a été demandé avant, mais la solution n'est pas de travail pour moi, donc je pose la question à nouveau.
J'ai essayé la solution donnée dans la réponse, mais encore mon OnKeyListener n'est jamais invoquée, sur certains appareils, en particulier les actions de l'OS. J'ai besoin de détecter la pression de la touche suppr du clavier quand il n'y a pas de personnage dans l'editText. Voici mon code;
EditText et = (EditText) findViewById(R.id.et);
et.setOnKeyListener(new EditText.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
Log.d("OnKeyListener", keyCode + " character(code) to send");
return false;
}
});
changer pour renvoyer la valeur true
ce qui ne signifie pas, de stock de l'OS ?
keylisteners travailler uniquement avec du matériel de claviers.
lookazis: stackoverflow.com/questions/4886858/...
ce qui ne signifie pas, de stock de l'OS ?
keylisteners travailler uniquement avec du matériel de claviers.
lookazis: stackoverflow.com/questions/4886858/...
OriginalL'auteur Ammar | 2014-06-26
Vous devez vous connecter pour publier un commentaire.
Enfin résolu moi-même par la mise en œuvre de cette fonctionnalité par le biais de
TextWatcher
. L'obstacle majeur est que, j'avais besoin de détecter appuyez sur la touche retour arrière, même quand il n'y a pas de personnage dansEditText
ou au moins la fin de l'utilisateur perçoit qu'il n'y a pas de personnage. La première chose ne pouvait pas être atteint toutefois j'en ai le plus récent. Voici le détail de la solution.Tout d'abord, j'ai toujours conservé un espace '' dans ma
editText
.Puis je l'ai adapté
EditText
de m'aviser pour chaque position du curseur de changement. Ce but est atteint par substitution deonSelectionChanged
méthode deEditText
. Mon personnalisésEditText
ressemble à ceci.Enfin, dans mon activité, je suis à l'écoute de position du curseur événement a changé et la réinitialisation de ma position du curseur dans la
editText
si il y à de l'espace nécessaire charatcer début c'est à dire à 0e index, comme cela;Espère que cela serait utile dans des situations similaires. Suggestions sont les bienvenues pour des améliorations/optimisations.
C'est une vieille question, mais j'aimerais vous proposer une solution. stackoverflow.com/questions/18581636/...
OriginalL'auteur Ammar
La documentation indique que les principaux événements ne seront reproduites pour le matériel coups de clés, pas de logiciels.
http://developer.android.com/reference/android/view/View.OnKeyListener.html
Les fabricants d'appareils sont découragés à propager les événements du clavier logiciel grâce à une clé d'auditeurs, même si c'est entièrement de la responsabilité du fabricant pour l'honneur ou pour soigner les mous et durs claviers avec des conditions d'égalité.
À partir de Android 4.2.2, Le système Android lui-même ne prendra pas en charge la clé de stoke événements pour les claviers virtuels à tous, de sorte que même les fabricants ne seront pas en mesure de choisir leur chemin.
De sorte que le seul infaillible option ici est de mettre en place votre propre IME (clavier), et gérer les frappes de vous-même.
TextWatcher peut être utilisé principalement pour remplacer la clé auditeurs, cependant editText.setText(...); également déclencher l'TextWatcher événements, de sorte que si l'on s'intéresse à tapé touches seulement alors probablement TextWatcher n'est pas non plus une solution.
Veuillez être prudent lors de l'utilisation de TextWatcher avec AutocomleteTextView ou EditText. Ne pas modifier le texte dans la AutocompleteTextView /EditText du contenu à l'intérieur de TextWatcher événements, parce que sinon vous aurez très probablement jusqu'à la fin dans l'infini de l'événement/de l'écoute en boucle.
Semble que vous êtes en droit. J'ai eu ce problème. Pouvez-vous montrer un exemple de mise en œuvre de votre propre IME (clavier), et gérer les frappes toi-même" ? Thnks.
OriginalL'auteur Ameer
Basé sur la la documentation de la
OnKeyListener
il semble que ce callback n'est appelé que pour le matériel claviers.OriginalL'auteur Nirekin
Il y a un attribut pour EditText:
android:imeOptions
J'ai remarqué que pour les valeurs:
actionGo
,actionNone
,normal
,actionSearch
onKeyListener m'a appelé.P. S. Il a même travaillé sans spécifier l'attribut.!
OriginalL'auteur rehman_00001
Essayer quelque chose comme cela :
il ne fonctionne pas ?
yup, ça ne marche pas.
Comme mentionné dans d'autres commentaires, cette méthode est uniquement destiné à travailler pour le matériel claviers. Comme d'autres l'ont également mentionné, vous pouvez trouver des cas où il ne fonctionne pas sur certains modèles de téléphones pour les claviers virtuels, mais ce n'est certainement pas une solution complète.
OriginalL'auteur Lockon