Comment désactiver EditText dans Android
-
28-10-2019 - |
Question
Comment puis-je désactiver la saisie EditText
champ dans Android?
La solution
Je pense que c'est un bug dans Android ... il peut être corrigé en ajoutant ce patch :)
Vérifiez ces liensquestion 1etquestion 2
J'espère que ce sera utile.
Autres conseils
vous pouvez utiliser EditText.setFocusable(false)
Pour désactiver l'éditionEditText.setFocusableInTouchMode(true)
pour activer l'édition;
Dans du code:
editText.setEnabled(false);
Ou, en XML:
android:editable="false"
En supposant editText
est toi EditText
objet:
editText.setEnabled(false);
Vous pouvez essayer la méthode suivante:
private void disableEditText(EditText editText) {
editText.setFocusable(false);
editText.setEnabled(false);
editText.setCursorVisible(false);
editText.setKeyListener(null);
editText.setBackgroundColor(Color.TRANSPARENT);
}
EditText activé:
EditText désactivé:
Cela fonctionne pour moi et j'espère que cela vous aide.
Réglez simplement la propriété focalisable de votre édition pour "false" et vous avez terminé.
<EditText
android:id="@+id/EditTextInput"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:focusable="false"
android:gravity="right"
android:cursorVisible="true">
</EditText>
Les options ci-dessous ne fonctionnent pas
Dans du code:
editText.setEnabled(false);
Ou, en XML:android:editable="false"
Edittext edittext = (EditText)findViewById(R.id.edit);
edittext.setEnabled(false);
Le code ci-dessous désactive le EditText dans Android
editText.setEnabled(false);
edittext.setFocusable(false);
edittext.setEnabled(false);
InputMethodManager imm = (InputMethodManager)
getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(edittext.getWindowToken(), 0);
//removes on screen keyboard
Activer:
private void enableEditText() {
mEditText.setFocusableInTouchMode(true);
mEditText.setFocusable(true);
mEditText.setEnabled(true);
}
Désactiver:
private void disableEditText() {
mEditText.setEnabled(false);
mEditText.setFocusable(false);
mEditText.setFocusableInTouchMode(false);
}
Pour désactiver un EditText dans Android:
editText.setEnabled(false);
Tu peux écrire edittext.setInputType(0)
Si vous souhaitez afficher le EditText mais ne sais pas de valeurs
Écrivez ceci dans Parent:
android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true"
Exemple:
<RelativeLayout
android:id="@+id/menu_2_zawezanie_rl"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/menu_2_horizontalScrollView"
android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true"
android:orientation="horizontal"
android:background="@drawable/rame">
<EditText
android:id="@+id/menu2_et"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_toLeftOf="@+id/menu2_ibtn"
android:gravity="center"
android:hint="@string/filtruj" >
</EditText>
<ImageButton
android:id="@+id/menu2_ibtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:background="@null"
android:src="@drawable/selector_btn" />
Selon moi ... si vous avez déjà déclaré le edittext
Dans le fichier XML et définir la propriété dans le fichier XML "android:enabled=false"
et désactiver au moment de l'exécution à ce moment-là dans le fichier java ajoutant seulement 2 ou 3 lignes
- Créez d'abord l'objet
- Déclarer EditText ET1;
Get By Id
et1 = (EditText) FindViewById(R.id.edittext1);
et1.setEnabled(false);
Vous pouvez activer ou désactiver chaque contrôle au moment de l'exécution par fichier Java et temps de conception par fichier XML.
Le XML editable
la propriété est obsolète depuis Niveau API 15.
Vous devriez utiliser maintenant le inputType
propriété avec la valeur none
. Mais il y a un bug qui rend cette fonctionnalité inutile.
Ici Vous pouvez suivre l'état du problème.