So deaktivieren Sie EditText in Android

79

Wie kann ich die Eingabe in ein EditTextFeld in Android deaktivieren ?

aj10
quelle
1
Tastatur bei Eingabe in EditText deaktivieren?
Kartik Domadiya
Es gibt zwei editText-Felder. Das erste dient zur Eingabe von E-Mails. Wenn die E-Mail gültig ist, muss das zweite editText-Feld aktiviert werden. Das Problem besteht jedoch darin, dass Sie eine ungültige E-Mail eingeben und auf der Softtastatur auf die nächste Schaltfläche klicken zweites Textfeld und kann Daten eingeben, obwohl ich edittext.setEnabled (false) gemacht habe. Ich benutze Android 2.3.1
Aj10

Antworten:

42

Ich denke, es ist ein Fehler in Android. Es kann durch Hinzufügen dieses Patches behoben werden :)
Überprüfen Sie diese Links Frage 1 und Frage 2

Hoffe es wird nützlich sein.

Midhun
quelle
112
Für diejenigen, die den Code lieber hier sehen möchten, als einen Hyperlink zu verwenden: editText.setEnabled(false);In Kombination mit editText.setFocusable(false);wird dies erreicht.
Mxyk
8
Das gleiche funktioniert mit XML: android:enabled="false"und android:focusable="false". Danke Leute!
Gelees
63

Sie können die EditText.setFocusable(false)Bearbeitung deaktivieren, um die Bearbeitung
EditText.setFocusableInTouchMode(true)zu aktivieren.

Chaitanya
quelle
5
Das war mein Problem. Ich nahm an, dass, nachdem setFocusable(false)ich setFocusable (true) einfach umdrehen konnte ... nicht der Fall. Das Einstellen setFocusableInTouchMode(true)hat den Trick für mich getan.
Timgcarlson
41

In Code:

editText.setEnabled(false);

Oder in XML:

android:editable="false"
Gabriel Negut
quelle
genau so!
Fernando Torres
14

Vorausgesetzt, editTextSie haben ein EditTextObjekt:

editText.setEnabled(false);
MByD
quelle
11

Sie können die folgende Methode ausprobieren:

 private void disableEditText(EditText editText) {
    editText.setFocusable(false);
    editText.setEnabled(false);
    editText.setCursorVisible(false);
    editText.setKeyListener(null);
    editText.setBackgroundColor(Color.TRANSPARENT); 
 }

EditText aktiviert:

EditText aktiviert

EditText deaktiviert:

EditText deaktiviert

Es funktioniert für mich und hoffe, es hilft Ihnen.

Maksym Kalin
quelle
Gute Antwort, aber es kann verbessert werden, indem die Zeile entfernt wird, in der die Hintergrundfarbe geändert wird, und editText.setKeyListener (null) hinzugefügt wird.
Syed Raza Mehdi
10

Setzen Sie einfach die fokussierbare Eigenschaft Ihres Edittextes auf "false" und Sie sind fertig.

<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>

Die folgenden Optionen funktionieren nicht

In Code:

editText.setEnabled(false); Oder in XML: android:editable="false"

Ramit Girdhar
quelle
6
Edittext edittext = (EditText)findViewById(R.id.edit);
edittext.setEnabled(false);
Sai Gopi ich
quelle
5

Aktivieren:

private void enableEditText() {
    mEditText.setFocusableInTouchMode(true);
    mEditText.setFocusable(true);
    mEditText.setEnabled(true);
}

Deaktivieren:

private void disableEditText() {
    mEditText.setEnabled(false);
    mEditText.setFocusable(false);
    mEditText.setFocusableInTouchMode(false);
}
Danylo Volokh
quelle
2

Der folgende Code deaktiviert den EditText in Android

editText.setEnabled(false);
uday
quelle
Setzen Sie einfach die fokussierbare Eigenschaft Ihres Edittextes auf "false" und Sie sind fertig. <! - begin snippet: js hide: false -> <! - language: lang-html -> <EditText android: id = "@ + id / EditTextInput" android: layout_width = "fill_parent" android: layout_height = "wrap_content" android: focusable = "false" android :vity = "right" android: cursorVisible = "true"> </ EditText> <! - end
snippet
2

Sie können schreiben, edittext.setInputType(0)wenn Sie den Edittext anzeigen möchten, aber keine Werte eingeben möchten

Jaydeep Khamar
quelle
2
edittext.setFocusable(false); 
edittext.setEnabled(false);

InputMethodManager imm = (InputMethodManager)
  getSystemService(Context.INPUT_METHOD_SERVICE);

imm.hideSoftInputFromWindow(edittext.getWindowToken(), 0);
  //removes on screen keyboard
Kumar Sukhani
quelle
1

So deaktivieren Sie einen Edittext in Android:

editText.setEnabled(false);
Vineet
quelle
1

Laut mir ... wenn Sie das bereits edittextin der XML-Datei deklariert und die Eigenschaft in der XML-Datei festgelegt "android:enabled=false"und zur Laufzeit zu diesem Zeitpunkt in der Java-Datei deaktiviert haben und nur 2 oder 3 Zeilen hinzugefügt haben

  1. Erstellen Sie zuerst das Objekt
  2. Declare EditText et1;
  3. Holen Sie sich durch ID

    et1 = (EditText) FindViewById(R.id.edittext1);
    et1.setEnabled(false);

Sie können jedes Steuerelement zur Laufzeit nach Java-Datei und zur Entwurfszeit nach XML-Datei aktivieren oder deaktivieren.

Nimisha Patel
quelle
0

Schreiben Sie dies in Eltern:

android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true"

Beispiel:

<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" />

Gimer
quelle
0

Die XML- editableEigenschaft ist seit API LEVEL 15 veraltet .

Sie sollten jetzt die inputTypeEigenschaft mit dem Wert verwenden none. Es gibt jedoch einen Fehler, der diese Funktionalität unbrauchbar macht.

Hier können Sie den Problemstatus verfolgen.

Brugui
quelle
0

Setzen Sie das inputTypeAttribut in Ihrer Datei layout.xml unter EditText auf none

Kumar Kundanani
quelle
0

versuchen Sie diesen Kotlin-Code,

editField.isEnabled = !editField.isEnabled

Thomas Vt
quelle
-1

Klicken Sie mit der rechten Maustaste auf den Textbereich und deaktivieren Sie die bearbeitbare Option:

Geben Sie hier die Bildbeschreibung ein

Nuwan Bandara
quelle
Willkommen bei Stack Overflow, Nuwan Bandara. Ihre Antwort bezieht sich auf JTextArea und nicht auf EditText, das aus Android Framework stammt. Es ist unwahrscheinlich, dass Sie eine Antwort auf diese Frage geben.
Igor Escodro