130 votes

Rendre l'EditText en lecture seule

Je veux créer un fichier en lecture seule EditText vue. Le XML pour faire ce code semble être android:editable="false" mais je veux faire cela en code.

Comment puis-je le faire ?

0 votes

4 votes

Il convient également de noter que android:editable est déprécié pour EditText .

1 votes

La façon la plus fiable de le faire est d'utiliser UI.setReadOnly(myEditText, true) de cette bibliothèque . Il y a quelques propriétés à définir, que vous pouvez consulter. dans le code source .

142voto

Nikhil Points 10166

Veuillez utiliser ce code

Edittext.setEnabled(false);

41 votes

Cela n'aura pas seulement pour effet d'activer la lecture seule, mais aussi de désactiver le défilement et la copie :-(

2 votes

Cette fonction est désactivée. Inutile surtout pour les EditText multilignes.

0 votes

Essayez ceci mais vous avez perdu la valeur ?

104voto

user962247 Points 478

Si vous setEnabled(false) alors votre editText aurait l'air désactivé (gris, etc.). Vous ne souhaitez peut-être pas modifier l'aspect visuel de votre éditeur.

Une manière moins intrusive serait d'utiliser setFocusable(false) .

Je crois que cela répond à votre question plus près de votre intention initiale.

9 votes

C'est une bonne chose, mais l'utilisateur peut toujours "Coller" dans le champ de texte.

15 votes

Cela a bien fonctionné pour moi. J'avais besoin qu'il soit cliquable, donc je ne pouvais pas utiliser setEnabled(false). Pour contourner le problème du collage, j'ai simplement utilisé Android:longClickable="false".

3 votes

Si vous utilisez setFocusable(false) (et même setFocusableInTouchMode(false) con setClickable(false) ), vous pouvez toujours modifier la valeur de votre editText en appuyant sur votre editText pour un quelques centaines de millisecondes et en sélectionnant Paste sauf si presse-papiers du système est vide. Je l'ai testé avec la dernière API disponible, à savoir 23 .

30voto

Salim Points 3017

En XML utiliser :

android:editable="false"

A titre d'exemple :

<EditText
    android:id="@+id/EditText1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:editable="false" />

0 votes

Según el Javadoc le editable ne semble pas être déprécié (du moins, pas à partir du niveau 23 de l'API).

9 votes

@MichelJung a raison. vous devez utiliser android:inputType="none"

2 votes

La question cherche un moyen de rendre le faux éditable par le biais du code Java et non du XML !

24voto

igorinov Points 151

Cela fonctionne pour moi :

EditText.setKeyListener(null);

5 votes

Cela aurait été bien, mais l'utilisateur peut toujours "coller" dans le champ. J'ai quand même levé le pouce, même si ça ressemble à un hack. J'aurais aimé qu'ils aient une API setEditable().

16voto

Egor Points 15923

Le mieux est d'utiliser TextView à la place.

10 votes

Selon le flux de son application, il peut avoir besoin de le rendre éditable à certains moments et pas à d'autres.

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