web-dev-qa-db-fra.com

Comment définir éditable true/false EditText dans Android par programme?

Nous pouvons définir la propriété éditable de EditText dans la présentation XML, mais pas par programme, mais il n'y a pas de méthode setEditable()!

Si EditText n'est pas activé [par setEnabled(false)] toujours éditable !

32
Vaibhav Jani

Je l'ai fait d'une manière plus facile, setEditable et setFocusable false. mais vous devriez vérifier cela.

Comment répliquer Android: editable = "false" dans le code?

19
sat

Cela peut aider:

if (cbProhibitEditPW.isChecked()) { // disable editing password
       editTextPassword.setFocusable(false);
       editTextPassword.setFocusableInTouchMode(false); // user touches widget on phone with touch screen
       editTextPassword.setClickable(false); // user navigates with wheel and selects widget
       isProhibitEditPassword= true;
} else { // enable editing of password
       editTextPassword.setFocusable(true);
       editTextPassword.setFocusableInTouchMode(true);
       editTextPassword.setClickable(true);
       isProhibitEditPassword= false;
}
40
JAL

Récupérez la valeur KeyListener de EditText par editText.getKeyListener() Et stockez-la dans la variable KeyListener type, qui contiendra La valeur de propriété Editable:

KeyListener variable;
variable = editText.getKeyListener(); 

Définissez la propriété Editable de EditText sur false comme suit:

 edittext.setKeyListener(null);

Définissez maintenant la propriété Editable de EditText sur true comme suit:

editText.setKeyListener(variable);  

Remarque: En XML, la propriété Editable par défaut de EditText doit être true.

7
Sumit Sonone
editText.setInputType(InputType.TYPE_NULL);
4
benmakp benmakn

Comment le faire par programme:

Pour activer EditText, utilisez:

et.setEnabled(true);

Pour désactiver EditText, utilisez:

et.setEnabled(false);
4
Karan Sharma

espérons que celui-ci vous aide:

edittext1.setKeyListener(null);
edittext1.setCursorVisible(false);
edittext1.setPressed(false);
edittext1.setFocusable(false);
3
Harshal Benake

Une fois le focus du texte modifié supprimé, vous ne pourrez plus taper même si vous le réglez à nouveau sur focus.

Voici un moyen de contourner

if (someCondition)
   editTextField.setFocusable(false);
else
   editTextField.setFocusableInTouchMode(true);

La définition de true dans setFocusableInTouchMode() semble faire l'affaire.

2
Tushar Thakur

essaye ça,

EditText editText=(EditText)findViewById(R.id.editText1);

editText.setKeyListener(null);

Ça fonctionne bien...

1
sandeepmaaram

Essayez ceci cela fonctionne très bien pour moi ..

EditText.setInputType(0);
EditText.setFilters(new InputFilter[] {new InputFilter()
{
@Override
public CharSequence filter(CharSequence source, int start,
                            int end, Spanned dest, int dstart, int dend) 
{
return source.length() < 1 ? dest.subSequence(dstart, dend) : "";

}
}
});
1
Niranj Patel
editText.setFocusable(false);
editText.setClickable(false);
1
kiran kumar

Puisque setEditable(false) est obsolète, utilisez textView.setKeyListener(null); pour rendre editText non-cliquable.

0
Amita

Une méthode simple et sûre:

editText.clearFocus();
editText.setFocusable(false);
0
drakeet