Comment faire pour éditer du texte non modifiable mais cliquable dans JAVA

Est-il possible de rendre EditText cliquable mais pas modifiable.

Je ne veux pas que ce soit éditable (le clavier ne devrait pas non plus apparaître et nous ne pourrions pas changer l’indice)

En fait, je veux utiliser Modifier le texte simplement comme une image avec un indice (qui ne peut pas être modifié). Je sais que le moyen réel était d’utiliser ImageView et un TextView , mais je veux essayer avec EditText car je n’utiliserai alors qu’une seule vue au lieu de 2. De plus, tout est dynamic, 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); 

ou

  et.setKeyListener(null); 

Cela rend le EditText non EDITABLE mais en même temps il ne EditText pas être cliqué.

L’astuce ici est: –

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

vous pouvez définir EditText en utilisant le code Java comme sharepoint départ: –

 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" 

Vous pouvez utiliser ceci ..

 android:focusableInTouchMode="false" 

pour que edittext ne soit pas modifiable dans xml.And pour un événement cliquable, vous pouvez utiliser l’ événement setOnTouchListener () pour faire la même chose que

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

android:editable est obsolète mais vous pouvez faire stg comme ci-dessous:

 android:editable="false" android:focusable="false" android:focusableInTouchMode="false" 

J’ai utilisé le cade ci-dessus pour edittexts dans lequel j’utilise des sélecteurs pour définir des données. Vous pouvez utiliser la disposition des entrées avec cela.

 edittext enable and disable for the edit like this EditText edit = (EditText) findviewby(R.id.edittext); through java edit.setEnabled(false); //non editable edit.setEnabled(true); //editable through xml  

Comme editable est obsolète. Vous pouvez utiliser android:inputType comme aucun pour concevoir xml ou comme InputType.TYPE_NULL dans le codage.

Conception de XML

  

Codage

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

Et ci-dessous est l’événement click de edittext

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

Pour moi, aucune des réponses n’a abouti à une solution totalement opérationnelle.

Présentation de mon correctif https://www.youtube.com/watch?v=oUA4Cuxfdqc

Guide (noob-friendly) , s’il vous plaît noter les quelques commentaires dans le code.

Créer une classe Java pour un EditText personnalisé appelé EditTextDispatched.java

 import android.content.Context; import android.util.AtsortingbuteSet; import android.view.MotionEvent; import android.widget.RelativeLayout; /** * @author Martin Pfeffer * @see https://celox.io */ public class EditTextDispatched extends android.support.v7.widget.AppCompatEditText { private static final Ssortingng TAG = "DispatchingEditText"; private boolean editable = true; public EditTextDispatched(Context context) { super(context); } public EditTextDispatched(Context context, AtsortingbuteSet attrs) { super(context, attrs); } public EditTextDispatched(Context context, AtsortingbuteSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } // get the current state public boolean isEditable() { return editable; } // set your desired behaviour public void setEditable(boolean editable) { this.editable = editable; } @Override public boolean dispatchTouchEvent(MotionEvent motionEvent) { if (editable) { // default behaviour of an EditText super.dispatchTouchEvent(motionEvent); return true; } // achieve the click-behaviour of a TextView (it's cuztom) ((RelativeLayout) getParent()).onTouchEvent(motionEvent); return true; } } 

Référencez le EditTextDispatched dans votre XML (vous devrez modifier le nom de pgk):

   

Invoquer:

 private void changeEditTextBehaviour(EditTextDispatched value, boolean editable) { value.setEditable(editable); value.setEnabled(editable); } 

Peut-être que tu peux essayer

 editText.setEnabled(false); 

Je sais que cette question a déjà été répondue mais pour donner une réponse plus actuelle (c’est-à-dire 2018), voici la configuration que j’utilise pour obtenir l’effet requirejs (c’est-à-dire non-entrée ou modifiable):

  val etUserLoc: EditText = themedEditText(R.style.Pale_Blue_Text_Bold_13) { id = R.id.et_comp_user_keys_var_user_location inputType = InputType.TYPE_NULL isClickable = true isFocusable = false textColor = resources.getColor(R.color.magenta) // overrides the default theme color text = Editable.Factory.getInstance().newEditable(resources.getSsortingng(R.ssortingng.loc_swakopmund)) }.lparams(width = matchConstraint, height = matchParent) { } 

Oui, il s’agit d’ANKO car je n’utilise plus XML dans aucun de mes projets Android. Le ‘inputType’ prend en charge la dépréciation ‘isEditable’.

vous pouvez aussi faire android:inputMethod="@null" dans votre EditText et il ne montrera pas le curseur ou le clavier et alors vous pouvez facilement saisir le paramètre d’écoute de clic.