42 votes

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

Dans la mise en page, vous pouvez définir les EditText pour qu'il ne soit pas modifiable par le biais de l'option android:editable attribute .

Comment puis-je faire cela en code ? Je dois faire en sorte que le EditText pour être modifiable en fonction des conditions.

39voto

Gerry Points 141
editText.setFocusable(false);
editText.setClickable(false);

cela permet de garantir la EditText ne peut pas être sélectionné et focalisé, il ne peut donc pas être édité.

28voto

tschakkkiiiii Points 53

Je viens d'essayer moi-même,

Pour désactiver l'édition du texte :

.setFocusable(false);

ceci met également setFocusableInTouchMode à false !

Pour permettre l'édition du texte :

setFocusableInTouchMode(true);

ceci définit également setFocusable à true ;

15voto

Christopher Perry Points 7972

La meilleure façon de le faire est cette simple ligne de code :

textView.setKeyListener(null);

Les docs disent que pour cette méthode :

Définit l'écouteur de clé à être utilisé avec ce TextView. Il peut être nul pour empêcher l'entrée de l'utilisateur.

13voto

Josef Pfleger Points 37003

Je pense qu'un InputFilter qui rejette tous les changements est une bonne solution :

editText.setFilters(new InputFilter[] {
    new InputFilter() {
        public CharSequence filter(CharSequence src, int start,
            int end, Spanned dst, int dstart, int dend) {
            return src.length() < 1 ? dst.subSequence(dstart, dend) : "";
        }
    }
});

Editar: dlazar a suggéré (ci-dessous) de modifier l'élément return a dst.subSequence(dstart, dend) pour surmonter le comportement qui supprime les mots.

6voto

abhishesh Points 260
android:editable="false" 
android:inputType="none" 

dans votre xml ou

EditText mEdit = (EditText) findViewById(R.id.yourid);
mEdit.setEnabled(false);

o

EditText mEdit = (EditText) findViewById(R.id.yourid);
mEdit.setKeyListener(null);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X