web-dev-qa-db-fra.com

EditText non éditable

J'essaie de mettre un EditText comme non éditable avec ce code:

<EditText Android:id="@+id/outputResult"
          Android:inputType="text"
          Android:editable="false"
          Android:layout_width="fill_parent"
          Android:layout_height="wrap_content"
          Android:text="@string/result" />

J'ai dû ajouter ceci pour non éditable

Android:focusable="false" 

Est-ce que je fais quelque chose de mal?

Merci beaucoup

39
Jjreina

Android:editable="false" devrait fonctionner, mais il est obsolète , vous devriez plutôt utiliser Android:inputType="none".

Alternativement, si vous voulez le faire dans le code, vous pouvez le faire:

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

C'est aussi une alternative viable:

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

Si vous voulez rendre votre EditText non éditable, permettez-moi de vous suggérer d'utiliser le widget TextView au lieu de EditText, car utiliser un EditText semble inutile dans ce cas.

EDIT: Modifié certaines informations depuis que j'ai découvert que Android:editable est obsolète et que vous devriez utiliser Android:inputType="none", mais il y a un bogue à ce sujet dans le code Android; Alors s'il vous plaît vérifier this .

110
Jean-Philippe Roy

Dans le cas où vous souhaitez rendre un EditText non éditable à partir du code:

void disableInput(EditText editText){
    editText.setInputType(InputType.TYPE_NULL);
    editText.setTextIsSelectable(false);
    editText.setOnKeyListener(new View.OnKeyListener() {
        @Override
        public boolean onKey(View v,int keyCode,KeyEvent event) {
                return true;  // Blocks input from hardware keyboards.
        }
    });
}

Si vous souhaitez supprimer la ligne horizontale de votre EditText, ajoutez simplement:

editText.setBackground(null);

Si vous voulez laisser les utilisateurs copier le contenu de EditText, utilisez:

editText.setTextIsSelectable(true);
6
vovahost
 <EditText
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:id="@+id/editTexteventdate"
            Android:background="@null"
            Android:hint="Date of Event"
            Android:textSize="18dp"
            Android:textColor="#fff"
            Android:editable="false"
            Android:focusable="false"
            Android:clickable="false"

            />

Ajoute ça 

Android: editable = "false"

Android: focusable = "false"

Android: clickable = "false"

son travail pour moi

5

Je suppose que je suis en retard, mais que nous suivons ensemble pour que cela fonctionne:

 Android:inputType="none"
 Android:enabled="false"
4
Akshay Taru

Ajouter la ligne ci-dessous dans votre edittext xml.

Android:editable="false"
Android:focusable="false"
Android:clickable="false"

Ça marche pour moi

2
Deepak Jain

J'ai eu ce problème également.

J'ai fait ça:

<EditText
    Android:layout_width="30dp"
    Android:layout_height="wrap_content"
    Android:id="@+id/yourid"
    Android:editable="false"
    Android:inputType="none" />
1
Cogiat84

Si vous voulez vraiment utiliser un editText et non un textView, envisagez d'utiliser ces trois éléments:

Android:focusable="false"

Android:clickable="false"

Android:longClickable="false"

EDIT: l’attribut "longClickable" désactive les actions longues qui font que les options "Coller" et ou "Sélectionner tout" sont affichées dans une info-bulle. 

1
Mofe-hendy Ejegi