Quelqu'un peut-il me dire comment rendre un EditText
fichier non modifiable via XML? Je mise essayé android:editable
de false
, mais
- il est obsolète; et
- ça n'a pas marché.
android
android-edittext
Fran Fitzpatrick
la source
la source
EditText
style et permettre le défilement, utilisez àUI.setReadOnly(myEditText, true)
partir de cette bibliothèque . Il y a quelques propriétés qui doivent être définies, que vous pouvez vérifier dans le code source .Réponses:
Utilisez ce code simple:
Ça marche.
Modifier: pour ajouter
KeyListener
plus tard, procédez comme suit1: définissez l'écouteur de clé sur la balise
textView
2: récupérez l'écouteur de clé dans la balise et remettez-le à
textView
la source
setFocusable()
parce que le document indique que l'implémentation par défaut pourrait être modifiée si elle était modifiée.Ajoutez ceci à votre fichier xml EditText:
Cela fera le même effet que
android:editable="false"
. A fonctionné pour moi, j'espère que cela fonctionnera aussi pour vous.la source
TextInputLayout
Laissez votre Edittext être
editText.setKeyListener(null);
fonctionnera mais il ne suffit pas d'écouter les touches.
L'utilisateur peut voir un curseur sur l'edittext.
Tu peux essayer
editText.setEnabled(false);
Cela signifie que l'utilisateur ne peut pas voir le curseur. Dire simplement que cela deviendra
TextView
.la source
Comme mentionné dans d'autres réponses, vous pouvez le faire,
setEnabled(false)
mais puisque vous demandez comment le définir via XML, voici comment le faire.Ajoutez l'attribut suivant à votre
EditText
:la source
enabled
n'est pas déconseillé.editable
est.désactiver à partir de XML (une ligne):
réactiver à partir de Java, le cas échéant (également une ligne):
la source
Ils ont rendu obsolète "modifiable" mais n'ont pas fourni un correspondant correspondant dans inputType.
Soit dit en passant, inputType = "none" a-t-il un effet? L'utiliser ou non ne fait aucune différence pour moi.
Par exemple, le editText par défaut serait une seule ligne. Mais vous devez sélectionner un InputType pour qu'il soit sur une seule ligne. Et si vous sélectionnez "aucun", c'est toujours multiligne.
la source
Cette combinaison a fonctionné pour moi:
la source
Comme vous l'avez mentionné Android: modifiable est obsolète. android: inputType = "none" doit être utilisé à la place mais cela ne fonctionne pas en raison d'un bogue ( https://code.google.com/p/android/issues/detail?id=2854 )
Mais vous pouvez réaliser la même chose en utilisant focusable.
Via XML:
Du code:
la source
si vous voulez cliquer dessus mais ne voulez pas le modifier, essayez:
la source
Utilisez simplement
android:enabled="false"
. Cela donnera également une apparence à ceEditText
qui le rendra non modifiable.la source
et utilisez ce qui suit:
la source
Si vous voulez le faire en code java, utilisez simplement cette ligne pour le désactiver:
Et cela pour lui permettre:
la source
J'ai essayé de faire:
qui devrait fonctionner, mais pour moi cela n'a pas fonctionné.
J'ai fini avec ce code:
qui fonctionne parfaitement.
la source
Lorsque je veux qu'une activité ne se concentre pas sur EditText et ne montre pas non plus le clavier lorsque vous cliquez dessus, c'est ce qui a fonctionné pour moi.
Ajout d'attributs à la disposition principale
puis le champ EditText
Voici un exemple:
la source
L'attribut "longClickable" désactive les actions de pression longue qui font apparaître les options "Coller" et / ou "Sélectionner tout" sous forme d'infobulle.
la source
En plus de @mahe madi, vous pouvez également essayer
Cette méthode masquera le curseur, perdra le focus et, plus important encore, définira la couleur du texte sur le noir se comportant comme TextView.
Et pour revenir à editText, faites simplement ceci pour obtenir toutes les propriétés de EditText.
J'espère que ça aide :)
la source
Vous pouvez utiliser
android:editable="false"
mais je vous conseille vraiment de l'utilisersetEnabled(false)
car il fournit un indice visuel à l'utilisateur que le contrôle ne peut pas être modifié. Le même repère visuel est utilisé par tous les widgets désactivés et la cohérence est bonne.la source
J'ai essayé ce qui suit:
mais le problème était que si le texte d'édition est le premier du formulaire, il obtient le focus et le code pickCode () qui lance une nouvelle activité est appelé immédiatement. J'ai donc modifié le code comme suit et il semble fonctionner assez bien (sauf que je ne peux pas mettre l'accent sur l'édition de texte mais je n'ai pas besoin de le faire):
Meilleures salutations,
Commentaires bienvenus,
John Goche
la source
J'utilise
EditText.setFocusable(false)
et redéfinis true si je veux éditer.la source
Essaye ça :
la source
De cette façon, le travail a été fait pour moi, je peux sélectionner et copier dans le presse-papiers, mais je ne peux pas modifier ou coller.
la source
android: editable est déconseillé, utilisez plutôt inputType à la place.
la source
J'ai rencontré le même problème mais après observation, j'ai constaté que cela
android:editable="false"
ne fonctionne que lorsque inputtype (android:inputType="ANY_VALUE"
) n'est pas donné dans l'Edittext.Supprimez inputType de EditText et utilisez editable = false, cela fonctionne bien.
la source
Je résous cela avec une boîte de dialogue.
la source
Réponse courte: j'ai utilisé
android:focusable="false"
et cela a fonctionné. L'écoute des clics fonctionne également maintenant.la source
Essayer
la source
Essayez ce code. Cela fonctionne dans mon projet, donc cela fonctionnera dans votre projet.
la source