Ich habe eine relativ einfache Frage. Ich habe eine Aktivität mit vielen EditText-Inhalten. Wenn ich die Aktivität öffne, wird automatisch auf den ersten EditText fokussiert und die virtuelle Tastatur angezeigt.
Wie kann ich das verhindern?
Ich habe eine relativ einfache Frage. Ich habe eine Aktivität mit vielen EditText-Inhalten. Wenn ich die Aktivität öffne, wird automatisch auf den ersten EditText fokussiert und die virtuelle Tastatur angezeigt.
Wie kann ich das verhindern?
Antworten:
Verwenden Sie diese Attribute in Ihrem Layout-Tag in einer XML-Datei:
Wie von anderen Mitgliedern in Kommentaren berichtet, funktioniert es nicht,
ScrollView
daher müssen Sie diese Attribute dem Hauptkind von hinzufügenScrollView
.quelle
Sie können dies zu Ihrer Android Manifest-Aktivität hinzufügen:
quelle
android:windowSoftInputMode="stateHidden|adjustPan"
Ich habe mehrere Implementierungen hier beschrieben, aber jetzt habe ich die
AndroidManifest.xml
für meineActivity
Eigenschaft hinzugefügt :Ich denke, das ist der einfache Weg, auch wenn Sie verwenden
fragments
.quelle
Wenn Sie eine andere Ansicht zu Ihrer Aktivität haben als a
ListView
, können Sie auch Folgendes tun:in Ihrem onResume (), um den Fokus von der zu erhalten
editText
.Ich weiß, dass diese Frage beantwortet wurde, aber nur eine alternative Lösung bietet, die für mich funktioniert hat :)
quelle
https://stackoverflow.com/a/11627976/5217837 Dies ist fast richtig:
Es sollte jedoch SOFT_INPUT_STATE_HIDDEN und nicht SOFT_INPUT_STATE_ALWAYS_VISIBLE sein
quelle
Verwenden Sie dies im Code Ihrer Aktivität:
quelle
Ich hatte ein ähnliches Problem, selbst wenn ich zwischen den Registerkarten wechselte, tauchte die Tastatur automatisch auf und blieb mit Android 3.2.1 auf einem Tablet auf. Verwenden Sie die folgende Methode:
In onCreate () und onPause () der Aktivität für jeden EditText:
setEditTextFocus (myEditText, false);
Für jeden EditText einen OnTouchListener:
Für jeden
EditText
in derOnEditorActionListener
:Und für jeden
EditText
in derlayout xml
:Es ist wahrscheinlich mehr Codeoptimierung möglich.
quelle
quelle
Ich habe diese einfache Lösung gefunden, die für mich funktioniert hat. Legen Sie diese Attribute in Ihrem übergeordneten Layout fest:
Und jetzt, wenn die Aktivität beginnt, wird dieses Hauptlayout standardmäßig fokussiert.
Außerdem können wir den Fokus zur Laufzeit aus den untergeordneten Ansichten entfernen, indem wir den Fokus erneut auf das Hauptlayout legen, wie folgt:
Hoffe es wird für dich funktionieren.
quelle
Dies ist die Lösung, die ich verwende. Sie ist nicht die beste Lösung, aber sie funktioniert gut für mich
quelle
Interessanterweise ist diese Dokumentation https://developer.android.com/training/keyboard-input/visibility.html , dass beim einer Aktivität und beim Fokussieren auf ein Textfeld die Softtastatur nicht angezeigt wird (und dann weitergeht) zeigen Ihnen, wie Sie die Tastatur anzeigen lassen können, wenn Sie Code verwenden möchten).
Auf meinem Samsung Galaxy S5 funktioniert meine App (ohne Manifesteintrag oder spezifischen Code) so - ohne Softtastatur. Auf einer Lollipop AVD wird jedoch eine Softtastatur angezeigt, die gegen das oben angegebene Dokument verstößt.
Wenn dieses Verhalten beim Testen in einer AVD auftritt, möchten Sie möglicherweise auf einem realen Gerät testen, um zu sehen, was passiert.
quelle
Dies hat einige gute Antworten im folgenden Beitrag: Verhindern Sie, dass EditText beim Start der Aktivität den Fokus erhält . Ich verwende regelmäßig den folgenden Code von Morgan :
HINWEIS : Das Dummy-Objekt muss direkt vor dem fokussierbaren Element platziert werden.
Und ich denke, es sollte auch mit ScrollView perfekt funktionieren und hatte auch hier keine Probleme mit der Barrierefreiheit.
quelle
Dies tritt auf, wenn Ihr EditText automatisch den Fokus erhält, wie wenn Ihre Aktivität beginnt. Eine einfache und stabile Möglichkeit, dies zu beheben, besteht darin, den anfänglichen Fokus auf eine andere Ansicht wie eine Schaltfläche usw. zu setzen.
Sie können dies in Ihrem Layout-XML tun, ohne dass Code erforderlich ist.
quelle
Akzeptierte Antwort funktioniert bei mir nicht, deshalb geben Antwort Antwort funktionierende Lösung, vielleicht ist es hilfreich!
Jetzt ist die Tastatur geöffnet, viel Spaß :)
quelle
Funktioniert gut
quelle
Fügen Sie den folgenden Code oben im Aktivitäts-XML hinzu und stellen Sie sicher, dass sich die Ansicht über EditText befindet
quelle
android:focusableInTouchMode="true"
Fügen Sie die obige Zeile zu xml von
EditText
oder hinzu,TextInputLayout
das den Fokus hat und das verursachtsoftInputKeyboard
angezeigt wird.Dies hat das Problem für uns gelöst und jetzt erscheint die Tastatur nicht mehr
quelle
search_edit_text = (EditText) findViewById (R.id.search_edit_text);
Dies funktioniert für mich Jungs Fragment kann eine andere Syntax haben. DAS FUNKTIONIERT FÜR AKTIVITÄT
quelle
Wenn Ihre Ansicht über EditText und Listenansicht verfügt, wird die Tastatur standardmäßig geöffnet. Gehen Sie wie folgt vor, um zu verhindern, dass die Tastatur standardmäßig angezeigt wird
Stellen Sie sicher, dass Sie den Fokus auf die Listenansicht anfordern, nachdem Sie die Ansicht für editText erhalten haben.
Zum Beispiel
Wenn Sie dies tun, wird editText fokussiert und die Tastatur wird eingeblendet.
quelle