Kann mir jemand sagen, wie man eine EditText
nicht über XML bearbeitbare macht? Ich habe versucht Einstellung android:editable
zu false
, aber
- es ist veraltet; und
- es hat nicht funktioniert.
android
android-edittext
Fran Fitzpatrick
quelle
quelle
EditText
Stil und erlaubt eine Rolle, die VerwendungUI.setReadOnly(myEditText, true)
von dieser Bibliothek . Es müssen einige Eigenschaften festgelegt werden, die Sie im Quellcode überprüfen können .Antworten:
Verwenden Sie diesen einfachen Code:
Es klappt.
Bearbeiten: Um
KeyListener
später hinzuzufügen , gehen Sie wie folgt vor1: Setzen Sie den Key Listener auf das Tag von
textView
2: Holen Sie sich den Key Listener vom Tag und setzen Sie ihn zurück auf
textView
quelle
setFocusable()
weil das Dokument angibt, dass die Standardimplementierung möglicherweise geändert wird, wenn sie geändert wird.Fügen Sie dies Ihrer EditText-XML-Datei hinzu:
Es wird den gleichen Effekt haben wie
android:editable="false"
. Hat für mich gearbeitet, hoffe es funktioniert auch für dich.quelle
TextInputLayout
Lass deinen Edittext sein
editText.setKeyListener(null);
wird funktionieren, aber es hört einfach nicht auf Tasten.
Der Benutzer kann einen Cursor auf dem Edittext sehen.
Du kannst es versuchen
editText.setEnabled(false);
Das bedeutet, dass der Benutzer den Cursor nicht sehen kann. Einfach zu sagen, es wird
TextView
.quelle
Wie in anderen Antworten erwähnt, können Sie eine
setEnabled(false)
Aktion ausführen. Da Sie jedoch fragen, wie Sie sie über XML festlegen möchten, finden Sie hier eine Vorgehensweise.Fügen Sie Ihrem Attribut das folgende Attribut hinzu
EditText
:quelle
enabled
ist nicht veraltet.editable
ist.Deaktivieren von XML (eine Zeile):
ggf. von Java aus wieder aktivieren (auch eine Zeile):
quelle
Sie haben "bearbeitbar" veraltet gemacht, aber keine entsprechende in inputType bereitgestellt.
Hat inputType = "none" übrigens irgendwelche Auswirkungen? Es zu benutzen oder nicht macht meines Erachtens keinen Unterschied.
Beispielsweise wird der Standard-editText als einzeilig bezeichnet. Sie müssen jedoch einen Eingabetyp auswählen, damit er einzeilig ist. Und wenn Sie "keine" auswählen, ist es immer noch mehrzeilig.
quelle
Diese Kombination hat bei mir funktioniert:
quelle
Wie du schon erwähnt hast android: editierbar ist veraltet. android: inputType = "none" sollte stattdessen verwendet werden, funktioniert jedoch aufgrund eines Fehlers nicht ( https://code.google.com/p/android/issues/detail?id=2854 ).
Aber Sie können das Gleiche erreichen, indem Sie fokussierbar verwenden.
Über XML:
Aus dem Code:
quelle
Wenn Sie darauf klicken, es aber nicht bearbeiten möchten, versuchen Sie Folgendes:
quelle
Einfach benutzen
android:enabled="false"
. Dies verleiht dem auch ein Erscheinungsbild, dasEditText
es nicht bearbeitbar erscheinen lässt.quelle
und verwenden Sie Folgendes:
quelle
Wenn Sie es in Java-Code tun möchten, verwenden Sie einfach diese Zeile, um es zu deaktivieren:
Und das, um es zu ermöglichen:
quelle
Ich habe versucht zu tun:
was funktionieren sollte, aber für mich nicht.
Ich habe mit diesem Code fertig:
das funktioniert perfekt.
quelle
Wenn ich möchte, dass sich eine Aktivität nicht auf den EditText konzentriert und beim Klicken auch keine Tastatur anzeigt, hat dies für mich funktioniert.
Hinzufügen von Attributen zum Hauptlayout
und dann das EditText-Feld
Hier ist ein Beispiel:
quelle
Zusätzlich zu @mahe madi können Sie dies auch versuchen
Diese Methode blendet den Cursor aus, verliert den Fokus und setzt vor allem die Textfarbe auf Schwarz, wie bei TextView.
Und um zu editText zurückzukehren, tun Sie dies einfach, um alle Eigenschaften von EditText zu erhalten.
Ich hoffe es hilft :)
quelle
Sie könnten verwenden,
android:editable="false"
aber ich würde Ihnen wirklich raten, es zu verwenden,setEnabled(false)
da es dem Benutzer einen visuellen Hinweis gibt, dass das Steuerelement nicht bearbeitet werden kann. Der gleiche visuelle Hinweis wird von allen deaktivierten Widgets verwendet und die Konsistenz ist gut.quelle
Das Attribut "longClickable" deaktiviert die Aktionen für langes Drücken, bei denen die Optionen "Einfügen" und "Alle auswählen" als QuickInfo angezeigt werden.
quelle
Ich habe folgendes versucht:
Das Problem war jedoch, dass wenn der Bearbeitungstext der erste im Formular ist, er den Fokus erhält und der pickCode () - Code, der eine neue Aktivität startet, sofort aufgerufen wird. Also habe ich den Code wie folgt geändert und er scheint ziemlich gut zu funktionieren (außer ich kann den Fokus nicht auf die Textbearbeitung legen, muss es aber nicht):
Freundliche Grüße,
Kommentare willkommen,
John Goche
quelle
Ich benutze
EditText.setFocusable(false)
und setze wieder true, wenn ich bearbeiten möchte.quelle
Versuche dies :
quelle
Auf diese Weise hat der Job für mich erledigt, ich kann auswählen und in die Zwischenablage kopieren, aber ich kann nicht ändern oder einfügen.
quelle
android: editierbar ist veraltet, also benutze stattdessen inputType .
quelle
Ich hatte das gleiche Problem, aber nach der Beobachtung stellte ich fest, dass dies
android:editable="false"
nur funktioniert, wenn inputtype (android:inputType="ANY_VALUE"
) im Edittext nicht angegeben ist.Entfernen Sie inputType aus EditText und verwenden Sie editable = false. Dies funktioniert einwandfrei.
quelle
Ich löse dies mit einem Dialog.
quelle
Kurze Antwort: Ich habe verwendet
android:focusable="false"
und es hat funktioniert. Click Listening funktioniert jetzt auch.quelle
Versuchen
quelle
Versuchen Sie diesen Code. Es funktioniert in meinem Projekt, also wird es in Ihrem Projekt funktionieren.
quelle