Ich weiß diese / ähnliche Frage wurde schon vorher gestellt, aber die Lösung gegeben funktioniert nicht für mich, also frage ich wieder. Ich habe versucht, die Lösung in dieser Antwort gegeben, aber immer noch meine OnKeyListener wird nie auf einigen Geräten aufgerufen, vor allem diejenigen mit OS Lager. Ich muss das Drücken der Del-Taste der Soft-Tastatur erkennen, wenn in editText kein Zeichen vorhanden ist. Hier ist mein Code;
%Vor% Schließlich habe ich mich selbst gelöst, indem ich diese Funktion über TextWatcher
implementiert habe. Die größte Hürde war, dass ich die Rücktaste drücken musste, auch wenn kein Zeichen in EditText
vorhanden ist oder zumindest der Endbenutzer feststellt, dass dort kein Zeichen vorhanden ist. Die erste Sache konnte nicht erreicht werden, aber ich tat die spätere. Nachfolgend ist die detaillierte Lösung.
Zuerst habe ich immer ein Leerzeichen in meinem editText
behalten.
Dann habe ich EditText
angepasst, um mich für jede Änderung der Cursorposition zu benachrichtigen. Dieser Zweck wird durch Überschreiben von onSelectionChanged
methode von EditText
erreicht. Mein angepasstes EditText
sieht so aus.
Abschließend höre ich in meiner Aktivität auf das Ereignis cursor position changed und setze meine Cursorposition in editText
zurück, wenn sie dort am erforderlichen Startplatz für Leerzeichen ist, d. h. am 0. Index, so;
Ich hoffe, dass dies in ähnlichen Situationen hilfreich wäre. Vorschläge sind willkommen für Verbesserungen / Optimierungen.
Die Dokumentation besagt, dass die Schlüsselereignisse nur für die Hardware-Schlüsselstriche und nicht für die Software propagiert werden.
Die Gerätehersteller werden tatsächlich davon abgehalten, Soft-Keyboard-Events über Key-Listener zu verbreiten, obwohl es dem Hersteller obliegt, dies zu respektieren oder die Soft- und Hard-Keyboards mit gleichen Bedingungen zu behandeln.
Ab Android 4.2.2 unterstützt das Android-System selbst keine Key-Stoke-Ereignisse für die Soft-Tastaturen, so dass selbst die Hersteller ihren Weg nicht wählen können.
Daher ist die einzige idiotensichere Option, Ihren eigenen IME (Soft Keyboard) zu implementieren und die Tastatureingaben selbst zu handhaben.
TextWatcher kann hauptsächlich verwendet werden, um die Schlüssellistener zu ersetzen, jedoch editText.setText (...); wird auch die TextWatcher-Ereignisse auslösen, wenn also nur an typisierten Schlüsseln interessiert ist, dann ist TextWatcher wahrscheinlich auch keine Lösung.
Bitte seien Sie vorsichtig, wenn Sie TextWatcher mit AutocolleteTextView oder EditText verwenden. Ändern Sie den Text im Text der AutocompleteTextView / EditText nicht innerhalb von TextWatcher-Ereignissen, sonst werden Sie höchstwahrscheinlich in einer unendlichen Ereignis / Hörschleife landen.
Basierend auf der Dokumentation von OnKeyListener
scheint es, dass der Callback ist nur für Hardwaretastaturen aufgerufen.
Schnittstellendefinition für einen Rückruf, der aufgerufen wird, wenn ein Hardwareschlüsselereignis an diese Ansicht gesendet wird. Der Rückruf wird aufgerufen, bevor das Schlüsselereignis der Ansicht übergeben wird. Dies ist nur für Hardwaretastaturen nützlich. Eine Software-Eingabemethode ist nicht verpflichtet, diesen Listener auszulösen.
Tags und Links android android-edittext keylistener