Dans mon application, j'ai un EditText que l'utilisateur n'a qu'un accès en lecture et non un accès en écriture.
Dans le code que je mets android:enabled="false"
.
Bien que l'arrière-plan de EditText soit devenu sombre, lorsque je clique dessus, le clavier apparaît et je peux changer le texte.
Que dois-je définir pour désactiver EditText?
android
android-edittext
Hesam
la source
la source
EditText
tout en gardant cette propriétés, il suffit d' utiliserUI.setReadOnly(myEditText, true)
de cette bibliothèque . Si vous souhaitez répliquer ce comportement sans la bibliothèque, consultez le code source de cette petite méthode.Réponses:
Je crois que le correct serait de mettre
android:editable="false"
.Et si vous vous demandez pourquoi mon lien pointe vers les attributs de
TextView
, vous la réponse est parce queEditText
hérite deTextView
:Mise à jour:
Comme mentionné dans les commentaires ci-dessous,
editable
est obsolète ( depuis le niveau 3 de l'API ). Vous devriez plutôt utiliserinputType
(avec la valeurnone
).la source
editText.setEnabled(false); editText.setInputType(InputType.TYPE_NULL);
android:editable="false" android:focusable="false"
fonctionne très bien pour moi (oubliez obsolète, je pense que android: editable n'a rien à voir avec android: inputType)utiliser
EditText.setFocusable(false)
pour désactiver l'éditionEditText.setFocusableInTouchMode(true)
pour activer l'édition;la source
editText.setEnabled(false);
changera la couleur du texte en gris. Cependant, les flèches ne modifient pas la couleur du texte lors de l'utilisationsetEnabled
, ce qui en fait une expérience incohérente.setFocusable(true)
? voir ce lien pour la différence entresetFocusable()
etsetFocusableInTouchMode()
: stackoverflow.com/questions/23799064/…Vous pouvez essayer la méthode suivante:
EditText activé:
EditText désactivé:
Cela fonctionne pour moi et j'espère que cela vous aide.
la source
editText.setFocusableInTouchMode(true)
place deeditText.setFocusable(true)
.Utilisez-le pour désactiver la saisie utilisateur
android: editable = "false" Cette méthode est obsolète.
la source
Pour désactiver l'édition
EditText
, je pense que nous pouvons utiliserfocusable
ORenable
maisEn utilisant
android:enabled=...
oueditText.setEnabled(...)
Il change également la couleur du texte en
EditText
gris.Lorsque vous cliquez dessus, cela n'a aucun effet
Utilisation de
android:focusable=...
oueditText.setFocusable(false)
-editText.setFocusableInTouchMode(true)
Il ne change pas la couleur du texte de
EditText
Lorsque cliqué, il met en évidence la
EditText
ligne du bas pendant environ quelques millisecondesProduction
la source
Comme il
android:editable="false"
est déprécié. Vous pouvez utiliser InputType TYPE_NULL sur EditTextutiliser comme ceci:
la source
Comme
android:editable="false"
déconseillé dansxml
Si vous le souhaitez,
java class
vous pouvez également l'utiliser par programmationla source
Simplement:
la source
Définissez les propriétés ci-dessous dans la classe:
Cela fonctionnera en douceur selon vos besoins.
la source
enabled
était suffisantPour désactiver la fonctionnalité d'un EditText, utilisez simplement:
au cas où vous voudriez l'activer d'une manière ou d'une autre, alors vous pouvez utiliser:
la source
si vous utilisez
android:editable="false"
, eclipse vous rappellera ce message "android: editable est déconseillé: utilisez plutôt inputType".Donc, j'utilise à la
android:focusable="false"
place, cela a bien fonctionné pour moi.la source
est désormais obsolète et utilise
la source
TYPE_TEXT_VARIATION_PASSWORD
Suivez ceci pour plus developer.android.com/reference/android/text/InputTypeUtilisez
TextView
plutôt.la source
Désactiver = FOCUS + CLICK + CURSOR
Désactiver la mise au point, le clic et la visibilité du curseur me suffit.
la source
Cela rendra votre edittext désactivé .
Et en utilisant cela
Ne fera que votre Edittext n'affichera pas votre clavier logiciel, mais s'il est connecté à un clavier physique, il vous permettra de taper.
la source
J'utilise la nouvelle bibliothèque de conception de matériaux de google. Dans mon cas, cela fonctionne lorsque j'utilise android: focusable = "false" et android: cursorVisible = "false"
la source
Dans mon cas, j'avais besoin de mon
EditText
pour faire défiler le texte si non. de lignes dépassentmaxLines
lorsque son désactivé. Cette implémentation a parfaitement fonctionné pour moi.la source
Essayez celui-ci, fonctionne très bien pour moi:
Remarque: vous devez ajouter
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
votre activité, sinon une fenêtre contextuellekeyboard
apparaîtra la première fois.la source
Comme certains l'ont mentionné, si vous désactivez le editText, il devient gris et si vous définissez false sur le focus, le curseur s'affiche.
Si vous souhaitez le faire uniquement avec xml, cela a fait l'affaire
J'ajoute simplement un FrameLayout apparaissant au-dessus du editText et je le place focalisable et cliquable pour que le editText ne puisse pas être cliqué.
la source
Cela fonctionne pour moi:
android: focusable = "false"
la source
Dans le commentaire de @ Asymptote sur la réponse acceptée, utilisez:
... et Bob est ton oncle.
la source
Aujourd'hui j'utilise toujours
editable="false"
, mais aussi avecfocusable="false"
.Je pense que le cas dont nous avons besoin pour rendre un EditText non modifiable, c'est parce que nous voulons garder son style EditText (avec ce soulignement, avec un indice, etc.), mais il accepte d'autres entrées au lieu du texte. Par exemple une liste déroulante.
Dans un tel cas d'utilisation, nous devons avoir le
EditText
cliquable (enabled="false"
ne convient donc pas). Le réglagefocusable="false"
fait cette astuce, cependant, je peux encore tenir longtemps sur EditText et coller mon propre texte dessus depuis le presse-papiers . En fonction de votre code et de sa gestion, cela peut même bloquer votre application.J'ai donc aussi utilisé
editable="false"
et maintenant tout est super, sauf l'avertissement.la source
vous pouvez utiliser
android:focusable="false"
mais vous devez également désactiver le curseur, sinon la fonction copier / coller fonctionnerait toujours.alors, utilisez
la source
Il existe plusieurs façons d'atteindre plusieurs niveaux de personnes handicapées.
editText.setShowSoftInputOnFocus(false);
eteditText.setFocusable
empêche l'
EditText
affichage du clavier - écriture dans du texte. Mais le curseur est toujours visible et l'utilisateur peut coller du texte.editText.setCursorVisible(false)
masque le curseur. Je ne sais pas pourquoi voudriez-vous faire ça. L'utilisateur peut saisir du texte et coller.
editText.setKeyListener(null)
Je trouve cela plus pratique. Il n'y a aucun moyen pour l'utilisateur de saisir du texte, mais le widget fonctionne toujours
OnClickListener
si vous souhaitez déclencher une action lorsque l'utilisateur le toucheeditText.setEnabled(false);
désactive complètement
EditText
. Il est littéralement en «lecture seule», l'utilisateur ne peut pas y saisir de texte et (par exemple)OnClickListener
ne fonctionne pas avec.Documentation TextEdit
la source
Réglez cela dans votre code XML, cela fonctionne.
android: focusableInTouchMode = "false"
la source