三星设备上对话框后关闭软键盘

3

我有一个对话框,其中包含一个EditText(inputType =“number”)。在对话框关闭后,我想隐藏键盘,如果对话框中的EditText曾经处于焦点状态,则键盘会打开。

现在问题是,我有一种方法可以解决这个问题(至少在某些Nexus设备上有效),但是在Samsung设备上无效(例如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) 因为我还需要在后台的 Activity 中使用键盘。
有人知道如何处理这个三星特定的问题吗?
2个回答

4

使用此代码

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

1
哇!这个方法真的有效,而且回答速度非常快,非常感谢!我搜索了很多,但每个人都给出了不起作用的相同答案。我需要等待3分钟,然后就可以将此答案标记为正确答案 :) - angor
1
这并没有帮助,因为如果键盘没有显示,它会使键盘出现。 - Ranil Wijeyratne

1

我没有三星设备来测试我的代码,但是我正在使用EditText的WindowToken来隐藏软键盘。我的代码如下:

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

希望它能够正常工作 :)

我也尝试过这个,但在我的情况下,hideSoftInputFromWindow从来没有像应该的那样工作。谢谢回答! - angor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接