Ich möchte die Soft-Tastatur automatisch anzeigen, wenn eine EditText
fokussiert ist (wenn das Gerät keine physische Tastatur hat), und ich habe zwei Probleme:
Wenn my
Activity
angezeigt wird, ist myEditText
fokussiert, aber die Tastatur wird nicht angezeigt. Ich muss erneut darauf klicken, um die Tastatur anzuzeigen (sie sollte angezeigt werden, wenn myActivity
angezeigt wird).Und wenn ich auf der Tastatur auf Fertig klicke, wird die Tastatur nicht angezeigt, aber die Tastatur
EditText
bleibt fokussiert und ich möchte nicht (weil meine Bearbeitung abgeschlossen ist).
Um fortzufahren, ist mein Problem, etwas ähnlicheres auf dem iPhone zu haben: das die Tastatur mit meinem EditText
Status synchronisiert (fokussiert / nicht fokussiert) und natürlich keine Softtastatur präsentiert, wenn es eine physische gibt.
quelle
Antworten:
Um das Erscheinen der Softtastatur zu erzwingen, können Sie verwenden
Und um den Fokus zu entfernen
EditText
, benötigen Sie leider einen DummyView
, um den Fokus zu erhalten.ich hoffe das hilft
Zum Schließen können Sie verwenden
Dies funktioniert für die Verwendung in einem Dialogfeld
quelle
yourEditText.requestFocus()
wie hier beschrieben: stackoverflow.com/questions/8991522/…Ich hatte das gleiche Problem. Unmittelbar nach dem Wechsel von editText VISIBILITY von GONE zu VISIBLE musste ich den Fokus einstellen und die Softtastatur anzeigen. Ich habe dies mit dem folgenden Code erreicht:
Es funktioniert bei mir mit einer Verzögerung von 100 ms, ist jedoch ohne Verzögerung oder nur mit einer Verzögerung von 1 ms fehlgeschlagen.
Der kommentierte Teil des Codes zeigt einen anderen Ansatz, der nur auf einigen Geräten funktioniert. Ich habe auf den Betriebssystemversionen 2.2 (Emulator), 2.2.1 (echtes Gerät) und 1.6 (Emulator) getestet.
Dieser Ansatz ersparte mir viel Schmerz.
quelle
EditText
. Für andere, die dies lesen, können Sie anstelle eines neuenHandler
auch dieView.postDelayed()
Methode imyourEditText
Widget selbst verwenden.Verwenden Sie, um die Tastatur anzuzeigen
Diese Methode ist zuverlässiger als das direkte Aufrufen des InputMethodManager.
Verwenden Sie zum Schließen die Option
quelle
InputMethodManager
? (Zum einen funktioniert es nicht, im Gegensatz zu Raukodraugs Lösung.)Wenn nichts anderes funktioniert, erzwingen Sie die Anzeige :
Und später, wenn Sie es schließen möchten, beispielsweise in onPause (), können Sie Folgendes aufrufen:
quelle
Der folgende Code stammt aus dem 4.1-Quellcode von Google für SearchView. Scheint zu funktionieren, auch bei kleineren Android-Versionen.
Außerdem muss beim Erstellen der Steuerung / Aktivität der folgende Code hinzugefügt werden. (In meinem Fall handelt es sich eher um ein zusammengesetztes Steuerelement als um eine Aktivität).
quelle
setImeVisibility(hasFocus)
?android:windowSoftInputMode="stateAlwaysVisible"
-> in Manifestdatei.edittext.requestFocus();
-> im Code.Dadurch wird die Softtastatur geöffnet, auf der der Bearbeitungstext den Anforderungsfokus hat, wenn die Aktivität angezeigt wird.
quelle
manifest
!Ich hatte in letzter Zeit in einigen einfachen Fällen Glück mit dem folgenden Code. Ich habe noch nicht alle Tests beendet, aber ...
Und schon wird die Tastatur angezeigt.
quelle
Sie können versuchen, das Anzeigen der Softtastatur zu erzwingen. Dies funktioniert bei mir:
quelle
Manchmal funktioniert die Antwort von Raukodraug nicht. Ich habe es auf diese Weise mit einigen Versuchen und Fehlern gemacht:
Und der EditText- Teil:
quelle
Verwenden Sie diese Option, um die Tastatur auszublenden:
und Tastatur zu zeigen:
quelle
onStart()
undgetDialog().getWindow()
als Alternative zu verwendengetActivity().getWindow()
.Und für Kotlin verwenden Sie einfach diese Erweiterungen:
quelle
Stellen Sie sicher, dass das Fragment funktioniert:
quelle
showSoftInput
arbeitete überhaupt nicht für mich.Ich dachte, ich müsste den Eingabemodus einstellen: (hier in der Aktivitätskomponente im Manifest)
quelle
Ob Sie es glauben oder nicht, mein Problem mit der Soft-Tastatur wurde behoben, als ich feststellte, dass die Animationen für Aktivitäten die Soft-Tastatur deaktivieren können. Wenn Sie die Absicht mit dem anrufen
und
Es kann die Soft-Tastatur ausblenden und es gibt keine Möglichkeit, sie anzuzeigen.
quelle
Ich hatte das gleiche Problem in verschiedenen Situationen, und die Lösungen, die ich gefunden habe, funktionieren in einigen, funktionieren aber in anderen nicht. Hier ist eine kombinierte Lösung, die in den meisten Situationen funktioniert, die ich gefunden habe:
quelle
quelle
Ich habe hier alles kombiniert und für mich funktioniert es:
quelle
Es hat bei mir funktioniert. Sie können damit auch versuchen, die Tastatur anzuzeigen:
quelle
Code-Auszug . . .
quelle
Kotlin
Erweiterung zum Anzeigen der Tastatur im Fokus.Dies ist eine Kombination früherer Antworten, die entweder zu lang oder unvollständig waren.
Diese Erweiterung stellt eine ausführbare Datei in der Nachrichtenwarteschlange bereit, die nach Anforderung des Fokus die Softtastatur anzeigt:
Rufen Sie es bei Bedarf aus einer beliebigen Ansicht auf:
quelle
füge einfach android hinzu: windowSoftInputMode = "stateHidden" in der Manifestdatei ...
quelle
quelle
In Ihrem Manifest:
android:windowSoftInputMode="stateAlwaysVisible"
- ursprünglich gestartete Tastatur.android:windowSoftInputMode="stateAlwaysHidden"
- zunächst versteckte Tastatur.Ich benutze es auch gerne,
"adjustPan"
weil sich der Bildschirm beim Starten der Tastatur automatisch anpasst.quelle
Fügen Sie einfach diese Zeile in Ihre EditText-Ansicht ein:
und TADA - Tastatur wurde automatisch angezeigt!
Ich hatte ein ähnliches Problem und entdeckte diese einfache und seltsame Lösung.
Wie hier bereits von user3392439 erwähnt, ist das Erscheinen der Tastatur beim Fokussieren irgendwie seltsam mit der Anwesenheit der Bildlaufkomponente in der XML-Datei verbunden.
Selbst wenn eine andere EditText-Ansicht vorhanden ist, die eine der oben genannten Zeilen in demselben XML enthält, wird die Tastatur angezeigt, unabhängig davon, auf welche EditTexts-Version gerade fokussiert ist.
Wenn Ihre XML-Datei mindestens eine sichtbare Ansicht mit einer Bildlaufkomponente enthält, wird die Tastatur automatisch im Fokus angezeigt.
Wenn kein Bildlauf erfolgt, müssen Sie auf EditText klicken, damit die Tastatur angezeigt wird.
quelle
requesFocus()
aus einem Click - Handler , und dies ist die einzige Möglichkeit , andere als eine explizite showSoftInput SHOW_FORCEDAlle oben angegebenen Lösungen ( InputMethodManager- Interaktion im OnFocusChangeListener.onFocusChange- Listener, der an Ihren EditText angehängt ist funktioniert wenn Sie eine einzelne Bearbeitung in der Aktivität haben.
In meinem Fall habe ich zwei Änderungen.
Ich habe beobachtet, dass onFocusChange für tvX mit hasFocus = true (Tastatur gezeigt) ausgelöst wird, dann aber für tvY mit hasFocus = true (Tastatur ausgeblendet). Am Ende war keine Tastatur sichtbar.
Die allgemeine Lösung sollte die richtige Aussage enthalten, wenn "Tastatur anzeigen, wenn EditText-Text den Fokus hat".
quelle
In Ihrem Abschnitt onResume () der Aktivität können Sie die Methode bringKeyboard () aufrufen.
quelle
WidgetUtils.showKeyboard
? Das ist hier das Wichtigste.Keine der Antworten hat bei mir funktioniert. Hier ist ein einfacher Weg.
Ich habe gerade die requestFocus () -Methode um 400 ms verzögert.
quelle
Ich habe ein seltsames Verhalten festgestellt, da in einer meiner Apps die Softtastatur beim Aufrufen der Aktivität automatisch angezeigt wurde (in onCreate befindet sich eine editText.requestFocus ()).
Beim weiteren Graben stellte ich fest, dass dies daran liegt, dass sich um das Layout eine ScrollView befindet. Wenn ich die ScrollView entferne, ist das Verhalten wie in der ursprünglichen Problembeschreibung beschrieben: Nur beim Klicken auf den bereits fokussierten editText wird die Softtastatur angezeigt.
Wenn es bei Ihnen nicht funktioniert, versuchen Sie es mit einer ScrollView - es ist sowieso harmlos.
quelle
Ich hatte ein ähnliches Problem bei der Verwendung von Ansichtsanimationen . Daher habe ich einen Animations-Listener eingerichtet, um sicherzustellen, dass ich auf das Ende der Animation warte, bevor ich versuche, einen Tastaturzugriff auf den angezeigten Edittext anzufordern.
quelle
Ich bin damit einverstanden, dass Raukodraug dafür in einer Swithview verwendet wird, die Sie wie folgt anfordern / klar fokussieren müssen:
Grüße.
quelle