2017-10-17 9 views
0

Alors, j'ai un EditText pageTitle et son comportement dépend de sa onFocusListener et onClickListener et une autre méthode setListenerToRootView() qui détecte si le clavier souple est affiché ou masqué. Le problème est chaque fois que je clique sur pageTitle, le curseur est automatiquement placé au début. Je me doute que setListenerToRootView() est responsable de ce bogue puisque le problème se répète quand je supprime cette méthode.Comment puis-je empêcher le curseur de se placer au début de EditText lorsque vous cliquez dessus

Cependant, j'ai besoin de cette méthode car la visibilité d'une autre vue (saveCancelBar) dépend de la visibilité du clavier virtuel. Est-il possible que je peux garder cette méthode, mais assurez-vous que lorsque l'utilisateur clique sur pageTitle, le curseur sera placé sur la position exacte sur laquelle il a cliqué (pas le début)?

The source code for my activity.

Répondre

1

utilisez setSelection() pour sélectionner la dernière position par programme. dans onClick et onFocus utilisation setSelection

 editTextName.setSelection(editTextName.getText().length()); 
+0

Malheureusement, cela ne fonctionne pas pour moi. – Bargain23

+0

pouvez-vous fournir votre code mis à jour s'il vous plaît –

+0

Ce que je voulais dire, c'est que votre solution n'est pas mon comportement prévu. Votre solution place le curseur à la fin de la chaîne/du texte au premier clic du 'EditText'. Ce que je veux, c'est placer le curseur exactement là où l'utilisateur a cliqué sur 'EditText' (par exemple' EditText' contient la chaîne 'sample' et l'utilisateur clique quelque part entre 'a' et 'm', le curseur (ou le '|' clignotant) apparaît entre 'a' et 'm' – Bargain23