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?
Vous pouvez essayer dans votre fichier main.xml
:
Android:selectAllOnFocus="true"
editText.setSelectAllOnFocus(true);
Cela fonctionne si vous voulez le faire par programme.
EditText dummy = ...
// Android.view.View.OnFocusChangeListener
dummy.setOnFocusChangeListener(new OnFocusChangeListener(){
public void onFocusChange(View v, boolean hasFocus){
if (hasFocus) && (isDummyText())
((EditText)v).selectAll();
}
});
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.
Géré en appelant le focus et la sélection sur le programme
{
editabletext.requestFocus();
editabletext.selectAll();
}
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.
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é.
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.
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
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();
}
}
});