Ich erstelle ein einfaches Tippspiel in Android. Ich habe kein Problem damit, Eingaben von der physischen Tastatur zu bekommen, aber jetzt versuche ich, die Soft-Tastatur ohne EditText erscheinen zu lassen. Bisher habe ich folgendes versucht:
1. EditText mit Sichtbarkeit = "unsichtbar" und diese Zeile:
((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).showSoftInput(keyboard_edittext, InputMethodManager.SHOW_FORCED); // SHOW_IMPLICIT also failed
2. Diese Linie in der onCreate()
:
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
Diese Methode zeigte tatsächlich ein leeres weißes Feld über den unteren 10% des Bildschirms, aber nicht die Tastatur, obwohl, wenn ich es jetzt führe es nichts tut.
3. Weitere zwei Zeilen in der onCreate()
:
InputMethodManager m = (InputMethodManager)this.getSystemService (Context.INPUT_METHOD_SERVICE); m.toggleSoftInput(0, InputMethodManager.SHOW_IMPLICIT);
Kein Glück bei diesen. Ist es sogar möglich, die Soft-Tastatur anzuzeigen (und dann zu verwenden) onKeyUp
/onKeyDown
) ohne auf einen EditText zu fokussieren?
Im Moment ist der einzige Weg, den ich sehen kann, der Ansatz, eine eigene Implementierung der Soft-Tastatur zu erstellen (d. H. Von Grund auf neu zu erstellen). Freue mich nicht darauf!
Antworten:
4 für die Antwort № 1Der folgende Code funktioniert für mich:
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput (InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
Ich benutze diesen Code in einem onKeyUp-Handler, wenn ich die "Menü" -Taste drücke.
3 für die Antwort № 2
Anstatt zu verwenden visibility="invisible"
Sie können einstellen android:alpha="0"
auf deinem EditText. Sie brauchen also noch einen EditText, der aber nicht sichtbar ist und Sie können die Eingabe von der Softkeyleiste mit einem onKeyListener()
2 für die Antwort № 3
Sie können erzwingen, dass das Softkeyboard angezeigt wird:
InputMethodManager im = (InputMethodManager)getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
im.showSoftInput(myView, InputMethodManager.SHOW_FORCED);
2 für die Antwort № 4
Stellen Sie sicher, dass Sie die Softtastatur für Ihre Ansicht aktivieren:
setFocusable(true);
setFocusableInTouchMode(true);
Dann ruf an:
InputMethodManager mgr = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
mgr.showSoftInput(this, InputMethodManager.SHOW_IMPLICIT);
1 für die Antwort № 5
Beachten Sie, dass wenn Sie im Querformat arbeiten, der Soft-Eingang ein eigenes Texteingabefeld erstellt, das Ihre ganze Arbeit ruiniert. Sie können dieses Verhalten verhindern:
// This makes us remain invisible when in landscape mode.
setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI);
Wenn Sie jetzt einen unsichtbaren EditText eingerichtet haben, bleibt er so wie Sie ihn gemacht haben.