Question Placez le curseur à la fin du texte dans EditText


Je change la valeur d'un EditText sur keyListener.

Mais quand je change le texte, le curseur se déplace au début de la EditText. J'ai besoin que le curseur soit à la fin du texte.

Comment déplacer le curseur à la fin du texte dans un EditText.


683
2018-06-02 16:32


origine


Réponses:


Essaye ça:

EditText et = (EditText)findViewById(R.id.inbox);
et.setSelection(et.getText().length());

1106
2017-07-08 12:07



Il existe une fonction appelée append pour ediitext qui ajoute la valeur de chaîne à la valeur edittext actuelle et place le curseur à la fin de la valeur. Vous pouvez avoir la valeur de la chaîne comme la valeur ediitext actuelle et appeler append ();

myedittext.append("current_this_edittext_string"); 

191
2017-12-16 02:53



Kotlin:

placez le curseur sur position de départ:

val editText = findViewById(R.id.edittext_id) as EditText
editText.setSelection(0)

placez le curseur sur fin de l'EditText:

val editText = findViewById(R.id.edittext_id) as EditText
editText.setSelection(editText.getText().length())

Le code ci-dessous est de placer le curseur après le deuxième caractère:

val editText = findViewById(R.id.edittext_id) as EditText
editText.setSelection(2)

JAVA:

placez le curseur sur position de départ:

 EditText editText = (EditText)findViewById(R.id.edittext_id);
 editText.setSelection(0);

placez le curseur sur fin de l'EditText:

EditText editText = (EditText)findViewById(R.id.edittext_id);
editText.setSelection(editText.getText().length());

Le code ci-dessous est de placer le curseur après le deuxième caractère:

EditText editText = (EditText)findViewById(R.id.edittext_id);
editText.setSelection(2);

65
2018-06-08 07:12



Si vous avez appelé setText avant et le nouveau texte n'a pas reçu l'appel de phase de mise en page setSelection dans un runnable séparé tiré par View.post(Runnable) (republier de ce sujet).

Donc, pour moi ce code fonctionne:

editText.setText("text");
editText.post(new Runnable() {
         @Override
         public void run() {
             registerPhone.setSelection("text".length());
         }
});

61
2018-04-16 13:30



Vous pouvez également placer le curseur à la fin du texte dans le EditText voir comme ceci:

EditText et = (EditText)findViewById(R.id.textview);
int textLength = et.getText().length();
et.setSelection(textLength, textLength);

38
2018-02-28 17:49



editText.setOnKeyListener(new View.OnKeyListener() {
    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        editText.setSelection(editText.getText().length());
        return false;
    }
});

26
2017-10-16 18:00



C'est une autre solution possible:

et.append("");

Essayez cette solution si elle ne fonctionne pas pour une raison quelconque:

et.setSelection(et.getText().length());

17
2018-04-05 22:27



Vous devriez être capable de le faire avec la méthode EditText setSelection (), voir ici


9
2018-06-02 17:04