Frage Kann ich die Soft-Tastatur ohne EditText verwenden?


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!


15
2018-01-02 17:26


Ursprung


Antworten:


Der 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.


4
2017-08-05 09:46



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()


3
2017-11-26 08:06



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
2018-01-02 17:52



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);

2
2018-02-11 00:58



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.


1
2018-04-12 23:39