103 votes

Comment rendre un texte non modifiable mais cliquable en JAVA ?

Est-il possible de faire EditText cliquable mais non modifiable.

Je ne veux pas qu'il soit modifiable (le clavier ne doit pas apparaître et nous ne devons pas pouvoir modifier l'indice).

En fait, je veux utiliser Edit text simplement comme une image avec un indice (qui ne peut pas être modifié). Je sais que la méthode actuelle consiste à utiliser un ImageView et un TextView mais je veux qu'il essaie avec EditText car je n'utiliserai alors qu'une seule vue au lieu de deux. De plus, tout est dynamique, donc pas de XML.

Pour l'exigence ci-dessus, la solution en XML est android:editable="false" mais je veux l'utiliser en Java.

Mais,

Si j'utilise :-

et.setEnabled(false);

o

 et.setKeyListener(null);

Il rend le EditText non modifiable, mais en même temps, il est également non cliquable.

189voto

Aamir Shah Points 1236

L'astuce ici est :-

et.setFocusable(false);
et.setClickable(true);

30voto

Nirav Bhavsar Points 852

Comme editable est déprécié. Vous pouvez utiliser android:inputType comme aucun dans la conception de xml ou comme InputType.TYPE_NULL dans le codage.

Conception de XML

<android.support.v7.widget.AppCompatEditText
    android:id="@+id/edt"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:clickable="true"
    android:focusable="false"
    android:inputType="none"
    android:text="EditText"/>

Codage

edt.setClickable(true);
edt.setFocusable(false);
edt.setInputType(InputType.TYPE_NULL);

Et ci-dessous, l'événement de clic de edittext

edt.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Toast.makeText(YourActivity.this,"edt click", Toast.LENGTH_LONG).show();
    }
});

25voto

abhishesh Points 260

Vous pouvez définir EditText en utilisant le code java suivant :-

edittext.setFocusable(false);
edittext.setClickable(true);

ou en utilisant le code ci-dessous dans le fichier XML pour EditText .

android:editable="false" 
android:inputType="none"

9voto

ridoy Points 2612

Vous pouvez utiliser ce..

android:focusableInTouchMode="false"

pour que l'edittext ne soit pas éditable en xml. Et pour l'évènement clickable vous pouvez utiliser setOnTouchListener() événement pour faire la même chose que comme

editText.setOnTouchListener(new OnTouchListener() {

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        // TODO Auto-generated method stub
                        //do your stuff here..
        return false;
    }
});

8voto

Kishore Reddy Points 669

Edittext activer et désactiver l'édition comme ceci

EditText edit = (EditText) findviewby(R.id.edittext);

Par le biais du code java

edit.setEnabled(false); //non editable
edit.setEnabled(true); //editable

Par le biais de xml

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

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