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?

War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top