Derzeit habe ich ein Layout, das a Button
, a TextView
und an enthält EditText
. Wenn das Layout angezeigt wird, wird der Fokus automatisch auf das gelegt EditText
, wodurch die Tastatur auf dem Android-Handy angezeigt wird . Es ist nicht was ich will. Gibt es eine Möglichkeit, den Fokus auf TextView
oder auf nichts zu setzen, wenn ein Layout angezeigt wird?
89
Sie sollten dies hinzufügen:
quelle
einstellen
in deinem
<EditText/>
quelle
Um den Fokus festzulegen, verzögern Sie requestFocus () mit einem Handler.
quelle
Sie können versuchen, nur die Tastatur auszublenden. Etwas wie das:
quelle
Versuchen
quelle
Setzen Sie diese Zeilen ebenfalls auf
OnResume
und stellen Sie sicher, dassfocusableInTouch
true festgelegt ist, während Sie Ihre Steuerelemente initialisierenquelle
Um den Fokus zu ändern, machen Sie die Textansicht in XML fokussierbar
und in java in on create
textView.requestFocus();
oder einfach die Tastatur ausblenden
quelle
Keine der obigen Antworten funktioniert für mich. Die einzige (sagen wir) Lösung bestand darin, die erste Textansicht in einem deaktivierten EditText zu ändern, der den Fokus erhält, und dann hinzuzufügen
im onCreate- Rückruf, um zu verhindern, dass die Tastatur angezeigt wird. Jetzt sieht mein erster EditText wie eine Textansicht aus, kann aber endlich den anfänglichen Fokus erhalten.
quelle
Der letzte Vorschlag ist die richtige Lösung. Nur um es zu wiederholen, legen Sie es zuerst
android:focusable="true"
in der Layoutdateixml
und dannrequestFocus()
in der Ansicht in Ihrem Code fest.quelle
Ich denke, eine Textansicht ist nicht fokussierbar. Versuchen Sie beispielsweise, den Fokus auf eine Schaltfläche zu setzen oder die fokussierbare Eigenschaft auf true zu setzen.
quelle
Sie können einen Bearbeitungstext der Größe "0 dip" als erstes Steuerelement in ur xml hinzufügen, damit der Fokus auf das Rendern gelegt wird. (Stellen Sie sicher, dass er fokussierbar ist und alle ...)
quelle
Sie können beginnen, indem Sie
android:windowSoftInputMode
Ihrer Aktivität eineAndroidManifest.xml
Datei hinzufügen .Dadurch wird die Tastatur nicht angezeigt, sie
EditText
ist jedoch weiterhin fokussiert. Um dies zu lösen, können Sieandroid:focusableInTouchmode
undandroid:focusable
intrue
Ihrer Stammansicht festlegen .Der obige Code stellt sicher,
RelativeLayout
dass der Fokus statt des Fokus erhalten wirdEditText
quelle
Der Schwerpunkt liegt auf der Auswahl von UI-Komponenten, wenn Sie etwas anderes als Touch verwenden (z. B. ein Steuerkreuz, eine Tastatur usw.). Jede Ansicht kann den Fokus erhalten, einige sind jedoch standardmäßig nicht fokussierbar. (Sie können eine Ansicht fokussierbar machen
setFocusable(true)
und erzwingen, dass sie fokussiert wirdrequestFocus()
.)Es ist jedoch wichtig zu beachten, dass im Touch-Modus der Fokus deaktiviert ist . Wenn Sie also Ihre Finger verwenden, bewirkt das programmgesteuerte Ändern des Fokus nichts. Eine Ausnahme bilden Ansichten, die Eingaben von einem Eingabeditor erhalten. An
EditText
ist so ein Beispiel. In dieser speziellen SituationsetFocusableInTouchMode(true)
wird die Softtastatur darüber informiert, wohin Eingaben gesendet werden sollen. AnEditText
hat diese Einstellung standardmäßig. Die Softtastatur wird automatisch angezeigt.Wenn Sie nicht möchten, dass die Softtastatur automatisch angezeigt wird, können Sie sie vorübergehend unterdrücken, wie @abeljus feststellt:
Wenn ein Benutzer auf klickt
EditText
, sollte die Tastatur trotzdem angezeigt werden.Weiterführende Literatur:
quelle