Ich verwende AlertDialog.Builder , um ein Eingabefeld mit EditText als Eingabemethode zu erstellen.
Leider wird die Soft-Tastatur nicht angezeigt , obwohl der EditText scharfgestellt ist, es sei denn, Sie berühren ihn erneut explizit.
Gibt es eine Möglichkeit, es zum Pop zu zwingen?
Ich habe nach dem (AlertDialog.Builder) .show () Folgendes versucht ; aber ohne Erfolg.
InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
mgr.showSoftInput(input, InputMethodManager.SHOW_FORCED);
Kann jemand helfen?
Vielen Dank!!
Antworten:
Ich habe so etwas gemacht
quelle
OnFocusChangeListener
Ansätze scheinen mir zu viel und verursachen Ärger. Sie müssen dasAlertDialog
aus dem erstellenAlertDialog.Builder
!setSoftInputMode
Zeile vor platzierendialog.show()
, sonst funktioniert sie nicht. +1 für die einfache richtige Lösung übrigensIch habe es geschafft, es so zu lösen:
quelle
Ich habe herausgefunden, dass derselbe Code auf dem Tablet ordnungsgemäß funktioniert, die Tastatur wird zwar angezeigt, auf dem Telefon jedoch nicht. Daher scheint eine weitere Recherche auf die Option "Anpassen" hinzuweisen.
Ich benutze dies, fühlt sich viel sauberer an.
quelle
SOFT_INPUT_STATE_ALWAYS_VISIBLE
. AsSOFT_INPUT_STATE_ALWAYS_VISIBLE
wird die UI-Komponenten des Dialogs blockieren, woSOFT_INPUT_ADJUST_RESIZE
die Größe geändert und der Dialog "hochgeschoben" werden kann.In meinem Fall konnte ich die Tastatur nur anzeigen, wenn der Dialog angezeigt wurde, indem ich Folgendes hinzufügte
DialogFragment
:Beachten Sie SOFT_INPUT_STATE_ALWAYS_VISIBLE anstelle von SOFT_INPUT_STATE_VISIBLE .
Aus der Dokumentation:
quelle
Wenn Sie showDialog aufrufen, um einen mit AlertDialog erstellten Dialog in onCreateDialog anzuzeigen
Sie sollten den Code hier einfügen
quelle
Eine viel bessere Lösung wird hier gegeben .
Keine Problemumgehung.
EditText
verhält sich wie erwartet.quelle
quelle
Dies wurde hier bereits beantwortet . Die Verwendung eines OnFocusChangeListener hat bei mir funktioniert.
quelle
In meinem Fall wurde der SoftInputMode nicht angezeigt, als ich ihn festlegte, bevor der Dialog angezeigt wurde (nachdem er erstellt wurde). Der folgende Code hat bei mir funktioniert, bei dem ich den SoftInputMode nach dem Anzeigen des Dialogfelds festgelegt habe.
Kotlin:
Java:
Ich hoffe, das hilft jedem, der das gleiche Problem hatte wie ich.
quelle
Versuchen Sie das, es funktioniert für mich
Wenn Sie eine Softtastatur anzeigen möchten:
Und wenn du es verstecken willst:
quelle
quelle
Dieses Problem tritt auf, wenn EditText nach dem Aufruf von AlertDialog.onCreate hinzugefügt wird.
https://developer.android.com/reference/androidx/appcompat/app/AlertDialog.Builder
Sie müssen das Flag FLAG_ALT_FOCUSABLE_IM löschen.
Da AlertDialog.show in DialogFragment.onStart aufgerufen wird, können Sie den Code in DialogFragment.onStart einfügen.
Oder Sie können den Dialog.setOnShowListener verwenden, wenn Sie kein DialogFragment verwenden.
quelle