Ich verwende eine benutzerdefinierte Tastatur, um eine Hex-Zahl einzugeben, so dass die IMM-Tastatur nicht angezeigt werden kann...
In v3.2.4_r1 setSoftInputShownOnFocus(boolean show)
wurde hinzugefügt, um zu steuern, ob die Tastatur angezeigt wird oder nicht, wenn ein TextView den Fokus erhält, aber es ist immer noch versteckt, so dass Reflexion verwendet werden muss:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) {
try {
Method method = TextView.class.getMethod("setSoftInputShownOnFocus", boolean.class);
method.invoke(mEditText, false);
} catch (Exception e) {
// Fallback to the second method
}
}
Bei älteren Versionen habe ich sehr gute (aber bei weitem nicht perfekte) Ergebnisse mit einem OnGlobalLayoutListener
, hinzugefügt mit Hilfe eines ViewTreeObserver
aus meiner Root-Ansicht und prüfe dann, ob die Tastatur so angezeigt wird:
@Override
public void onGlobalLayout() {
Configuration config = getResources().getConfiguration();
// Dont allow the default keyboard to show up
if (config.keyboardHidden != Configuration.KEYBOARDHIDDEN_YES) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(mRootView.getWindowToken(), 0);
}
}
Bei dieser letzten Lösung wird die Tastatur möglicherweise für den Bruchteil einer Sekunde eingeblendet und die Auswahlgriffe werden durcheinander gebracht.
Wenn die Tastatur in den Vollbildmodus wechselt, wird onGlobalLayout nicht aufgerufen. Um dies zu vermeiden, verwenden Sie TextView#setImeOptions(int) oder in der TextView XML-Deklaration:
android:imeOptions="actionNone|actionUnspecified|flagNoFullscreen|flagNoExtractUi"
Aktualisierung: Ich habe gerade herausgefunden, was Dialoge verwenden, um die Tastatur nicht anzuzeigen, und es funktioniert in allen Versionen:
getWindow().setFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM,
WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
19 Stimmen
Was ist, wenn Sie nur einen EditText und mehrere Schaltflächen, wie Kontrollkästchen und Radios, haben? Der einzige Ort, an dem Sie die Tastatur benötigen, ist der einzelne EditText. Wie registrieren Sie, dass etwas anderes gewählt/angeklickt wurde, um die Tastatur auszublenden?
19 Stimmen
Ich komme mir dumm vor. Ich bin nicht in der Lage, die Tastatur auf ICS zu verstecken. Habe alle Methoden hier und Kombinationen von ihnen versucht. Keine Chance. Die Methode, um es zu zeigen, funktioniert, aber ich kann es nicht verstecken, egal, was windw Token, verstecken Flaggen, manifestieren Einstellungen oder Kerzen zu jedem Heiligen. Auf der Tastatur zeigen, sehe ich immer diese: I/LatinIME( 396): InputType.TYPE_NULL ist angegeben W/LatinIME( 396): Unerwartete Eingabeklasse: inputType=0x00000000 imeOptions=0x00000000
5 Stimmen
/** * Diese Methode wird verwendet, um die Soft-Tastatur auszublenden. * @param activity */ public void hideSoftKeyboard(Activity activity) { InputMethodManager inputMethodManager = (InputMethodManager)activity.getSystemService(Activity.INPUT_METHOD_SERVICE); inputMethodManager.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), 0); }
0 Stimmen
este hat bei mir funktioniert
0 Stimmen
Da die Geräte immer größere Bildschirme und höhere Auflösungen haben, wird das Ausblenden der virtuellen Tastatur immer unwichtiger.
0 Stimmen
Müssen mit InputMethodManager mit dem INPUT_METHOD_SERVICE zu spielen, um Soft-Tastatur wie behandeln readyandroid.wordpress.com/show-hide-Android-soft-keyboard
0 Stimmen
Ist das Ihr Ernst? Kann man die Tastatur nicht einfach ausblenden, wenn man das möchte? Es spielt keine Rolle, ob Sie viele Tasten oder Text oder einen großen Bildschirm haben, um Android zu bitten, die Tastatur auszublenden, muss eine einzige Anweisung sein :S