Ich zeige ein Eingabefeld mit AlertDialog
. Das EditText
Innere des Dialogfelds selbst wird automatisch fokussiert, wenn ich anrufe AlertDialog.show()
, aber die Softtastatur wird nicht automatisch angezeigt.
Wie kann ich die Softtastatur automatisch anzeigen lassen, wenn der Dialog angezeigt wird? (und es gibt keine physische / Hardware-Tastatur). Ähnlich wie beim Drücken der Suchtaste zum Aufrufen der globalen Suche wird die Softtastatur automatisch angezeigt.
android
keyboard
android-edittext
soft-keyboard
Randy Sugianto 'Yuku'
quelle
quelle
Antworten:
Sie können einen Fokus-Listener für das
EditText
On erstellenAlertDialog
und dann dasAlertDialog
's abrufenWindow
. Von dort aus können Sie die Softtastatur anzeigen lassen, indem Sie anrufensetSoftInputMode
.quelle
final AlertDialog dialog = builder.create()
und dannshow
den Dialog anstelle des Builders verwenden.Zum Anzeigen der Tastatur:
Zum Ausblenden der Tastatur verwenden Sie:
quelle
Sie können direkt nach dem Erstellen des Dialogfelds eine Softtastatur anfordern (Test auf SDK - r20).
quelle
Ich hatte das gleiche Problem und löste es mit dem folgenden Code. Ich bin nicht sicher, wie es sich auf einem Telefon mit Hardwaretastatur verhalten wird.
quelle
Ich habe dieses Beispiel gefunden: http://android-codes-examples.blogspot.com/2011/11/show-or-hide-soft-keyboard-on-opening.html . Fügen Sie kurz zuvor den folgenden Code hinzu
alert.show()
.quelle
oder
quelle
stateHidden
und wenn ich feststelle, dass ein Benutzer ein neues Element erstellt, habe ich die Tastatur mithilfe der von Ihnen erwähnten Codezeile angezeigt. :) Nochmals vielen Dank.((Activity) context).getWindow()....
.Codeausschnitte aus anderen Antworten funktionieren, aber es ist nicht immer klar, wo sie im Code platziert werden sollen, insbesondere wenn Sie ein verwenden
AlertDialog.Builder
und dem offiziellen Dialog-Tutorial folgen, weil es nichtfinal AlertDialog ...
oder verwendetalertDialog.show()
.Ist vorzuziehen
Weil SOFT_INPUT_STATE_ALWAYS_VISIBLE die Tastatur ausblendet, wenn der Fokus vom EditText abweicht, wobei SHOW_FORCED die Tastatur so lange anzeigt, bis sie explizit geschlossen wird, selbst wenn der Benutzer zum Startbildschirm zurückkehrt oder die letzten Apps anzeigt.
Unten finden Sie Arbeitscode für einen AlertDialog, der mithilfe eines benutzerdefinierten Layouts mit einem in XML definierten EditText erstellt wurde. Außerdem wird die Tastatur so eingestellt, dass sie eine "Go" -Taste hat, und die positive Taste kann ausgelöst werden.
alert_dialog.xml:
AlertDialog.java:
quelle
Nun, dies ist ein ziemlich alter Beitrag, aber es gibt noch etwas hinzuzufügen.
Dies sind zwei einfache Methoden, mit denen ich die Tastatur unter Kontrolle halten kann und die perfekt funktionieren:
Tastatur anzeigen
Tastatur ausblenden
quelle
getCurrentFocus()
?Activity
.Lassen Sie mich einige zusätzliche Informationen zur Lösung von Yuku geben, da ich es schwierig fand, dies zum Laufen zu bringen! Wie erhalte ich das AlertDialog-Objekt von meinem AlertDialog.Builder? Nun, es ist das Ergebnis meiner
alert.show()
Hinrichtung:quelle
Schauen Sie sich diese Diskussion an, in der das IME manuell ausgeblendet und angezeigt wird. Ich habe jedoch das Gefühl, dass ein fokussierter
EditText
IME nicht angezeigt wird, weil SieAlertDialog.show()
IhreOnCreate()
oder eine andere Methode aufrufen, die aufgerufen wird, bevor der Bildschirm tatsächlich angezeigt wird. Wenn Sie es verschieben,OnPostResume()
sollte es in diesem Fall behoben sein, glaube ich.quelle
Ja, Sie können damit tun
setOnFocusChangeListener
, wird Ihnen helfen.quelle
Ich weiß, dass diese Frage alt ist, da ich denke, dass die Verwendung einer Erweiterungsfunktion eine schönere Möglichkeit ist, die Tastatur für einen Bearbeitungstext anzuzeigen
Hier ist die Methode, mit der ich die Tastatur für einen Edittext zeige.
Kotlin-Code: Ich muss nur anrufen
edittext.showKeyboard()
der Java-Code:
quelle
Wenn jemand bekommt:
Versuchen Sie, dem getSystemService-Aufruf einen Kontext hinzuzufügen.
Damit
quelle
Die ursprüngliche Frage betrifft Dialoge und mein EditText wird regelmäßig angezeigt. Jedenfalls vermute ich, dass dies auch für die meisten von Ihnen funktionieren sollte. Hier ist also, was für mich funktioniert (die oben vorgeschlagene Methode mit der höchsten Bewertung hat nichts für mich getan). Hier ist eine benutzerdefinierte EditView, die dies tut (Unterklassen sind nicht erforderlich, aber ich fand es für meine Zwecke praktisch, da ich auch den Fokus erfassen wollte, wenn die Ansicht sichtbar wird).
Dies ist eigentlich weitgehend das gleiche wie die Antwort der Leckerbissen. Ich habe seine Antwort überhaupt nicht bemerkt, da sie null Stimmen hatte. Dann wollte ich gerade seinen Beitrag kommentieren, aber es wäre zu lang gewesen, also habe ich diesen Beitrag trotzdem beendet. tidbeck weist darauf hin, dass er sich nicht sicher ist, wie es mit Geräten mit Tastatur funktioniert. Ich kann bestätigen, dass das Verhalten in beiden Fällen genau das gleiche zu sein scheint. Dies bedeutet, dass im Hochformat die Softwaretastatur angezeigt wird und im Querformat nicht. Das Herausrutschen der physischen Tastatur macht auf meinem Telefon keinen Unterschied.
Weil ich persönlich das Verhalten etwas umständlich fand, entschied ich mich für :
InputMethodManager.SHOW_FORCED
. Das funktioniert so, wie ich es wollte. Die Tastatur wird unabhängig von der Ausrichtung sichtbar. Zumindest auf meinem Gerät wird sie jedoch nicht angezeigt, wenn die Hardwaretastatur herausgezogen wurde.quelle
Das Problem scheint zu sein, dass AlertDialog, da die Stelle, an der Sie Text eingeben, anfänglich ausgeblendet ist (oder verschachtelt ist oder so), automatisch das Flag setzt
WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM
oderWindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
so, dass keine weiche Eingabe ausgelöst wird.Um dies zu beheben, fügen Sie Folgendes hinzu:
quelle
versuchen und verwenden:
quelle
Um die Tastatur zu zeigen, musste ich Folgendes tun
Android TextField: Fokus + Soft Input programmgesteuert einstellen
Im Wesentlichen ist die Lösung die folgende
Wo
ShowKeyboard
istNach einer erfolgreichen Eingabe stelle ich auch sicher, dass ich die Tastatur verstecke
quelle
Fügen Sie diese Methoden in Ihre Util-Klasse ein und verwenden Sie sie überall.
Kotlin
Java
quelle
Ich habe nette kotlin-esqe-Erweiterungsfunktionen erstellt, falls sich jemand dafür interessiert
quelle
Dies ist ein gutes Beispiel für Sie:
quelle
Warum diese Antwort - Weil die obige Lösung Ihre Tastatur anzeigt, aber nicht verschwindet, wenn Sie auf eine andere Stelle klicken
EditText
. Sie müssen also etwas tun, damit das Keybaord verschwindet, wennEditText
der Fokus verloren geht.Sie können dies erreichen, indem Sie die folgenden Schritte ausführen:
Machen Sie die übergeordnete Ansicht (Inhaltsansicht Ihrer Aktivität) anklickbar und fokussierbar, indem Sie die folgenden Attribute hinzufügen
Implementieren Sie eine hideKeyboard () -Methode
Zuletzt legen Sie den onFocusChangeListener Ihres Edittextes fest.
quelle
Das ist etwas knifflig. Ich habe es so gemacht und es hat funktioniert.
1. Beim ersten Aufruf, um die weiche Eingabe aus dem Fenster auszublenden. Dadurch wird die weiche Eingabe ausgeblendet, wenn die weiche Tastatur sichtbar ist, oder es wird nichts unternommen, wenn dies nicht der Fall ist.
2. Zeigen Sie Ihren Dialog
3. Rufen Sie dann einfach auf, um die weiche Eingabe umzuschalten.
Code:
quelle
Versuche dies
quelle
Versuchte viele, aber das hat bei mir funktioniert (kotlin):
quelle
Unter https://stackoverflow.com/a/39144104/2914140 habe ich etwas vereinfacht:
Es ist besser als https://stackoverflow.com/a/11155404/2914140 :
Wenn Sie die Home-Taste drücken und zum Startbildschirm wechseln, bleibt die Tastatur geöffnet.
quelle
Ich rufe dies in onCreate () auf, um die Tastatur automatisch anzuzeigen, wenn ich in die Aktivität kam.
quelle