So deaktivieren Sie EditText in Android


79

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


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.


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.


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


14

Vorausgesetzt, editTextSie haben ein EditTextObjekt:

editText.setEnabled(false);

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.


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"


6
Edittext edittext = (EditText)findViewById(R.id.edit);
edittext.setEnabled(false);

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);
}

2

Der folgende Code deaktiviert den EditText in Android

editText.setEnabled(false);

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


2
edittext.setFocusable(false); 
edittext.setEnabled(false);

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

imm.hideSoftInputFromWindow(edittext.getWindowToken(), 0);
  //removes on screen keyboard

1

So deaktivieren Sie einen Edittext in Android:

editText.setEnabled(false);

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.


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


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.



0

versuchen Sie diesen Kotlin-Code,

editField.isEnabled = !editField.isEnabled


-1

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

Geben Sie hier die Bildbeschreibung ein


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.