J'ai une grille de 7x6 de Jouer avec editext code> vues. Je souhaite toutes les personnes handicapées lorsque l'application commence, c'est-à-dire qu'ils devraient se comporter comme la normale
textviews code> et ne pas être modifiables. Ensuite, l'utilisateur tapote une cellule dans la grille, elle change de fond et effectue quelque chose de visuel. Si l'utilisateur clique sur la cellule une fois de plus, il devrait permettre l'édition. Je me débats avec
onclick () code> et
oncocuschange () code> auditeurs, mais je ne peux pas accomplir une interaction aussi basique. P>
SetEnabled () CODE> et
SETFOCUSABLE () CODE> NE Aide pas. Je me demande pourquoi même une tâche simple comme celle-ci a été rendue si difficile sur Android P>
7 Réponses :
Essayez d'utiliser ce SetFocusAnTouch () code> au lieu de
SetFocusable () Code> Méthode. P>
J'ai un problème à l'aide de cela. Je sais que cela semble une tâche simple, mais il est très difficile de faire le travail. Je ne peux pas vous expliquer le nombre de problèmes lors de l'utilisation de cela, mais l'interaction est loin de mon objectif. Si vous avez le temps, essayez ceci sur le code et voyez ce qui se passe
Vous pouvez faire le follwoing:
Si vous souhaitez rendre EditText non modifitable, utilisez la méthode suivante
edittext.setInputtype(Null);
Ne fonctionne pas. L'EditText peut toujours avoir l'accent, afin qu'il puisse être édité par un mot clé dur. C'est un bug connu
Selon la ligne de guidage Android, veuillez utiliser LongkeyPress pour la question que vous avez "si l'utilisateur clique sur la cellule une fois de plus, il devrait permettre l'édition" p>
Où avez-vous lu ceci? Je ne suis pas au courant de ces directives. Quoi qu'il en soit, le problème n'est pas avec Double Tap Tap vs Long Tap. Il s'agit d'une commutation entre un TextView et un EditText lorsque l'utilisation effectue une action
Puisque vous utilisez GridView pour vous préoccuper, vous pouvez effectuer ce qui suit. P>
La classe extensible contiendra une propriété booléenne nommée modifiable à l'aide de cette propriété à OnitemClickListerner de GridViewYou peut appeler ensemble ou setFocusabel ou à la fois pour un EditText. P>
Si vous partagez votre code, je peux élaborer davantage sur ce numéro. P>
En fait, je ne peux pas utiliser de gridlayout. J'ai nié deux dispositions linéaires pour faire ma table. Aussi, malheureusement, je ne vois pas de crédibilité () int L'API publique
Réglage du type d'entrée à NULL n'est pas suffisant, car il ne supprime que le clavier logiciel et si le périphérique dispose d'un clavier matériel, il y aura une entrée. Donc, afin de supprimer toute modification que vous devriez suivre:
editText.setInputType(InputType.TYPE_NULL); editText.setFilters(new InputFilter[] { new InputFilter() { public CharSequence filter(CharSequence src, int start, int end, Spanned dst, int dstart, int dend) { return src.length() < 1 ? dst.subSequence(dstart, dend) : ""; } } });
Merci pour cette suggestion. Malheureusement, cela ne suffit pas pour résoudre le problème. C'est incroyable
Qu'est-ce que tu veux dire incroyable ?! Ce n'est pas une question de croire ou non - c'est juste une question de vérification. J'utilise ce morceau de code dans l'application et ça marche
Désolé Barmaley: L'incroyable fait référence à la documentation pauvre Android, pas votre suggestion :)
J'ai enfin trouvé une solution. C'est une question d'appeler p>
setFocusableItouchmode (booléen) code> li>
-
setFocusable (booléen) code> li>
ul>
Lorsque le eittext code> est créé pour la première fois, il peut donc intercepter les clics. Ensuite, on peut régler ces drapeaux à nouveau pour rendre le editext code> modifiable, demander la mise au point et afficher / masquer manuellement le clavier programmable avec INPUTMETHODMANAGER CODE> MÉTHODES P>
MERCI! J'ai eu exactement le même problème, et ce correctif fonctionne. Qui aurait pensé que nous devions passer à travers cela beaucoup de travail (et si peu de bonne documentation) pour vous rendre à une solution aussi simple? Bon travail!
Tout d'abord, écrivez cette ligne dans votre XML dans editext: et d'utiliser le code dans Java comme indiqué ci-dessous: p> Boolean check = true;
yourEditText.setEnabled(check);
check=!check;