Wie Autofokus / Tastatur-Pop-up eines Feldes, wenn der Bildschirm zeigt bis entfernen?
-
04-10-2019 - |
Frage
Ich habe einen Bildschirm, auf dem das erste Feld ist ein EditText, und sie erhält den Fokus beim Start, Popups auch der numerische Eingabe-Typ, der sehr ärgerlich ist
Wie kann ich sicherstellen, dass, wenn die Aktivität gestartet wird der Fokus nicht gewonnen wird, und / oder das Eingabefeld nicht erhöht wird?
Lösung
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editTextField.getWindowToken(), 0);
oder
set Aktivitätseigenschaft in Manifest-Datei, wie unten in der Anwendung Tag
android:windowSoftInputMode="stateHidden"
Andere Tipps
zur Anwendung Manifest-Datei, und schreiben Sie diese Zeile für diese Aktivität, die Sie deaktivieren möchten Auto-Tastatur Pop-up.
android:windowSoftInputMode="stateHidden"
haben programmatisch nicht die Tastatur angezeigt, aber die Standard-Widget erhalten noch Fokus Aufruf:
getWindow().setSoftInputMode(WindowManager.
LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
in onResume()
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
rufen Sie das obige Verfahren innerhalb von onCreate () .Es Prevent Softkeyboard zeigen, es sei denn, Benutzer wählen Sie EditText durch
tapping or clicking.
oder einfach android:windowSoftInputMode="stateHidden"
in Aktivitäts-Tag in Manifest.xml
hinzufügen
Dies ist in der Regel ein Chaos. Das erste, was ich versuche, ist zu versuchen, den Fokus mit einem anderen Blick zu stehlen über. Sie haben auch die fokussierbar und focusableInTouchMode haben.
<TextView
...
android:focusable="true"
android:focusableInTouchMode="true">
<requestFocus/>
</TextView>
Haben Sie eine andere Ansicht greifen Fokus. Standardmäßig wird die erste fokussierbare Ansicht Fokus erhalten, wenn ein Layout aufgeblasen wird. Sie können den Fokus auf eine andere Ansicht über XML-Anforderung:
<TextView
android:layout_width="wrap_parent"
android:layout_height="wrap_content"
android:text="Some other view">
<requestFocus />
</TextView>
Das funktioniert für jede Ansicht.
Wenn Sie es programmatisch tun möchten, können Sie view.requestFocus()
verwenden.
if(getWindow().getAttributes().softInputMode==WindowManager.LayoutParams.SOFT_INPUT_STATE_UNSPECIFIED)
{
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
}
habe nicht versucht, noch bin ich in der Nähe meiner Programmierung Computer, aber ich würde vermuten, Fokus auf der übergeordneten Ansicht oder etwas in der Art programmatisch zu senden könnte den Trick tun - das ist eher eine Abhilfe als eine Lösung, aber auch hier nicht in der Lage Test es nur ein Gedanke