Il y a deux EditText
, lors du chargement de la page un texte est défini dans la première EditText, maintenant le curseur sera dans le lieu de départ de EditText
, je veux ensemble la position du curseur dans la seconde EditText qui ne contient aucune donnée. Comment faire ça?
235
Réponses:
Où position est un int:
la source
J'ai fait de cette façon pour définir la position du curseur à la fin du texte après avoir mis à jour le texte de EditText par programme ici,
etmsg
est EditTextla source
etmsg.setText("my new text..."); etmsg.setSelection(etmsg.length());
Comment définir la position du curseur EditText dans Android
Sous le code est placé le curseur sur Commencer dans
EditText
:Sous le code, placez le curseur à la fin de
EditText
:Sous le code est placé le curseur après la position du 2ème caractère:
la source
Il n'y a qu'une seule position dans un EditText vide, c'est
setSelection(0)
.Ou vouliez-vous dire que vous souhaitez vous concentrer sur votre
EditText
lorsque votre activité ouvre? Dans ce cas, sonrequestFocus()
la source
utilisez la ligne ci-dessous
e2
est éditer le texte Nom de l'objetla source
Laissez editText2 est votre deuxième vue EditText. Puis mettez le morceau de code suivant dans onResume ()
ou mettre
dans votre disposition xml de la deuxième vue EditText.
la source
un certain temps, le curseur de texte d'édition ne se trouve pas à une position particulière, si nous utilisons directement
editText.setSelection(position);
. Dans ce cas, vous pouvez essayerla source
Si vous souhaitez placer le curseur dans une certaine position sur un EditText, vous pouvez utiliser:
En outre, il est possible de définir la position initiale et finale, de sorte que vous sélectionniez par programme du texte, de cette façon:
Veuillez noter que la définition de la sélection peut être délicate car vous pouvez placer le curseur avant ou après un caractère, l'image ci-dessous explique comment indexer fonctionne dans ce cas:
Donc, si vous voulez que le curseur se trouve à la fin du texte, réglez-le simplement sur
yourEditText.length()
.la source
setSelection(int index)
La méthode inEdittext
devrait vous permettre de le faire.la source
pour rappel: si vous utilisez
edittext.setSelection()
pour régler le curseur, et que cela ne fonctionne PAS lors de la configuration d'unalertdialog
par exemple, assurez-vous de réglerselection()
APRÈS que la boîte de dialogue a été crééeexemple:
la source
Ce code vous aidera à afficher votre curseur à la dernière position de modification du texte.
la source
N'oubliez pas d'appeler
requestFocus()
avantsetSelection
pour edittext.la source
la source
Si vous souhaitez placer le curseur après le
n
caractère de droite à gauche, vous devez faire comme ceci.Si le texte d'edittext comme
et vous voulez déplacer le curseur à la 6ème position de la droite
Ensuite, il déplacera le curseur
la source
la source
la source
Placer le curseur sur une ligne et une colonne
Vous pouvez utiliser le code suivant pour obtenir la position dans votre EditText qui correspond à une certaine ligne et colonne. Vous pouvez ensuite utiliser
editText.setSelection(getIndexFromPos(row, column))
pour définir la position du curseur. Les appels suivants à la méthode peuvent être effectués:getIndexFromPos(x, y)
Allez à la colonne y de la ligne xgetIndexFromPos(x, -1)
Aller à la dernière colonne de la ligne xgetIndexFromPos(-1, y)
Aller à la colonne y de la dernière lignegetIndexFromPos(-1, -1)
Aller à la dernière colonne de la dernière ligneToutes les limites de ligne et de colonne sont gérées; La saisie d'une colonne supérieure à la longueur de la ligne renverra la position dans la dernière colonne de la ligne. La saisie d'une ligne supérieure au nombre de lignes de EditText ira à la dernière ligne. Il devrait être suffisamment fiable car il a été fortement testé.
La question a déjà été répondue, mais je pensais que quelqu'un pourrait vouloir le faire à la place.
Il fonctionne en parcourant chaque caractère, en incrémentant le nombre de lignes chaque fois qu'il trouve un séparateur de ligne. Lorsque le nombre de lignes est égal à la ligne souhaitée, il renvoie l'index en cours + la colonne, ou l'index de fin de ligne si la colonne est hors limites. Vous pouvez également réutiliser la
getTrueLineCount()
méthode, elle retourne un nombre de lignes ignorant l'habillage du texte, contrairement àTextView.getLineCount()
.la source
Dans kotlin, vous pouvez créer une fonction d'extension comme celle-ci:
puis appelez simplement
myEditText.placeCursorAtLast()
la source
Si vous souhaitez définir la position du curseur dans EditText? essayez ces ci-dessous le code
la source
Comment résoudre le problème de position du curseur qui se déplace automatiquement vers la dernière position après le formatage dans US Mobile comme (xxx) xxx-xxxx dans Android.
Définissez la méthode ci-dessous pour n'importe quelle classe d'activité dans mon cas Le nom de l'activité est AppUtil et accédez-y globalement
Et si vous souhaitez définir une position spécifique
la source
Je crois que la façon la plus simple de le faire est simplement d'utiliser un rembourrage.
Dites dans la section edittext de votre xml, ajoutez android: paddingLeft = "100dp" Cela déplacera votre position de départ du curseur 100dp de droite à gauche.
De la même manière, vous pouvez utiliser android: paddingRight = "100dp" Cela déplacera votre position finale du curseur 100dp de gauche à droite.
Pour plus de détails, consultez cet article sur mon blog : Android: définition de la position de départ et de fin du curseur dans le widget EditText
la source