web-dev-qa-db-fra.com

Sélectionner tout le texte à l'intérieur de EditText quand il aura le focus

J'ai un EditText avec du texte factice. Lorsque l'utilisateur clique dessus, je souhaite qu'il soit sélectionné afin que l'utilisateur commence à taper le texte factice est supprimé.

Comment puis-je atteindre cet objectif?

219
Galip

Vous pouvez essayer dans votre fichier main.xml:

Android:selectAllOnFocus="true"
489
TheCottonSilk
editText.setSelectAllOnFocus(true);

Cela fonctionne si vous voulez le faire par programme.

155
creftos
EditText dummy = ... 

// Android.view.View.OnFocusChangeListener
dummy.setOnFocusChangeListener(new OnFocusChangeListener(){
    public void onFocusChange(View v, boolean hasFocus){
        if (hasFocus) && (isDummyText())
            ((EditText)v).selectAll();
    }
});
33
xandy

Je sais que vous avez trouvé une solution, mais la meilleure façon de faire ce que vous demandez est d'utiliser simplement l'attribut Android:hint dans votre EditText. Ce texte apparaît lorsque la zone est vide et non focalisée, mais disparaît lors de la sélection de la zone EditText.

25
kcoppock

Géré en appelant le focus et la sélection sur le programme

{
editabletext.requestFocus();
editabletext.selectAll();
}
11
AMD

Pourquoi n'essaies-tu pas Android: hint = "hint" de fournir l'indication à l'utilisateur .. !!

Le "conseil" disparaîtra automatiquement lorsque l'utilisateur cliquera sur l'edittextbox. c'est la meilleure et la meilleure solution.

11
Vaibhav Vajani

Vous pouvez également ajouter une méthode OnClick au editText après

_editText.setSelectAllOnFocus(true);

et en cela:

_editText.clearFocus();
_editText.requestFocus();

Dès que vous cliquez sur le editText, tout le texte est sélectionné.

4
user4596287

SelectAllOnFocus fonctionne la première fois que le EditText est activé, mais si vous souhaitez sélectionner le texte tous les lorsque l'utilisateur clique dessus, vous devez appeler editText.clearFocus() entre-temps.

Par exemple, si votre application comporte un seul texte EditText et un bouton, cliquer sur le bouton après avoir modifié le texte EditText laisse le focus dans le texte EditText. Ensuite, l'utilisateur doit utiliser la poignée du curseur et la touche de retour arrière pour supprimer le contenu de la zone de texte EditText avant de pouvoir entrer une nouvelle valeur. Appelez donc editText.clearFocus() dans la méthode onClick du Button.

4
Noumenon

J'ai essayé une réponse ci-dessus et n'a pas fonctionné jusqu'à ce que j'ai changé les déclarations. C'est ce qui a fonctionné pour moi:

    myEditText.setSelectAllOnFocus(true);
    myEditText.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            onClickMyEditText();
        }
    });

   private void onClickMyEditText() {
       if(myEditText.isFocused()){
        myEditText.clearFocus();
        myEditText.requestFocus();
       }else{
           myEditText.requestFocus();
           myEditText.clearFocus();
       }
   }

Je devais demander si le focus est sur EditText, et si ce n'est pas le cas, demandez d'abord le focus, puis effacez-le. Sinon la prochaine fois que je clique sur EditText, le clavier virtuel n'apparaîtra jamais

2
RipperJugo

Ceci fonctionne pour moi:

myEditText.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if(myEditText.isFocused()){
                myEditText.requestFocus();
                myEditText.clearFocus();
                myEditText.setSelection(myEditText.getText().length(), 0);
            }else{
                myEditText.requestFocus();
                myEditText.clearFocus();
            }

        }
    });
0
senior_russia