在Samsung设备上对话后关闭软键盘

时间:2014-11-25 09:47:38

标签: android keyboard android-softkeyboard

我有一个包含EditText(inputType="number")的对话框。关闭对话框后,我想隐藏键盘,如果对话框的EditText在某个时刻处于Focus状态,则会打开键盘。

现在问题是我有一种方法可行(至少在一些Nexus设备上),除了三星设备(至少S2,S3)。

final InputMethodManager inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(getWindow().getDecorView().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);

在其他设备上,键盘(仅限数字)在对话框后关闭。 在三星设备上,键盘只需更改为带有所有字母的键盘(inputType="text"),而不是inputType="numbers"的键盘。我希望它能够关闭/隐藏。

我做不了类似的事情 getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN) 对于后台的活动,因为我也需要一个键盘。

有谁知道如何处理这个三星特有的问题?

2 个答案:

答案 0 :(得分:4)

使用此代码

InputMethodManager inputMethodManager=(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);

答案 1 :(得分:1)

我没有三星设备来测试我的代码,但我正在使用EditText中的WindowToken来隐藏SoftKeyboard。 我的代码看起来像这样:

View focused = getCurrentFocus();
if (focused != null) {
    InputMethodManager iM = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
    iM.hideSoftInputFromWindow(focused.getWindowToken(), 0);
}

希望它有效:)