233 Stimmen

Deaktivieren des EditText in Android

In meiner Anwendung habe ich ein EditText, auf das der Benutzer nur Lesezugriff und keinen Schreibzugriff hat.

Im Code setze ich android:enabled="false".

Obwohl sich der Hintergrund des EditText dunkel verändert hat, erscheint beim Klicken die Tastatur und ich kann den Text ändern.

Was sollte ich einstellen, um das EditText zu deaktivieren?

277voto

Julian Punkte 19244

Ich glaube, dass es korrekt wäre, android:editable="false" zu setzen.

Und wenn Sie sich fragen, warum mein Link auf die Attribute von TextView zeigt, lautet die Antwort, dass EditText von TextView erbt:

EditText ist eine dünnere Schicht über TextView, die sich so konfiguriert, dass sie bearbeitbar ist.

Update:
Wie in den Kommentaren unten erwähnt, ist editable ([seit API Level 3](http://developer.android.com/reference/android/R.attr.html#editable)) veraltet. Sie sollten stattdessen inputType verwenden (mit dem Wert none).

182voto

Sean Android Punkte 1837

Verwenden Sie EditText.setFocusable(false), um die Bearbeitung zu deaktivieren
EditText.setFocusableInTouchMode(true), um die Bearbeitung zu aktivieren;

74voto

Maksym Kalin Punkte 1593

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

Aktivierter EditText :

Aktivierter EditText

Deaktivierter EditText :

Deaktivierter EditText

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

72voto

Sampath Kumar Punkte 4253

Verwenden Sie dies, um die Benutzereingabe zu deaktivieren

android:focusable="false"

android:editable="false" Diese Methode ist veraltet.

49voto

Linh Punkte 49889

Zum Deaktivieren der Bearbeitung von EditText denke ich, dass wir focusable ODER enable verwenden können, aber

  1. Verwendung von android:enabled=... oder editText.setEnabled(...)

    Es ändert auch die Textfarbe im EditText zu Grau.
    Beim Klicken hat es keine Wirkung

  2. Verwendung von android:focusable=... oder editText.setFocusable(false) - editText.setFocusableInTouchMode(true)

    Es ändert nicht die Textfarbe des EditText
    Beim Klicken wird die untere Linie des EditText für ein paar Millisekunden hervorgehoben

Ausgabe

Bildbeschreibung hier eingeben

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X