我在gridview中单击项目后尝试关闭我的自定义键盘。我正在尝试在BaseAdapter类中执行此操作。上下文来自InputMethodService。
到目前为止,我在下面尝试过:
FrameLayout scroll = (FrameLayout)inflater.inflate(R.layout.keyboard, null);
InputMethodManager imm = (InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(scroll.getWindowToken(), 0);
-
imm.toggleSoftInput(0,InputMethodManager.HIDE_IMPLICIT_ONLY);
-
scroll.setVisibility(View.INVISIBLE);
答案 0 :(得分:2)
如果您拥有自己的自定义键盘并且扩展了InputMethodService
,那么您只需拨打
requestHideSelf(0)
从您的服务中强行关闭键盘或
requestHideSelf(InputMethodManager.HIDE_IMPLICIT_ONLY);
只有在用户没有明确要求显示键盘时才能关闭键盘。
<强>文档强>
答案 1 :(得分:1)
我只是在我的应用程序中复制和粘贴,它对我们来说很好用:
public static void hideKeyboard(View v) {
try {
v.clearFocus();
InputMethodManager imm = (InputMethodManager) v.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
} catch (Exception e) {
// we all saw shit happening on this code before
}
}
答案 2 :(得分:0)
您可以将此方法放在公共类中,并在需要的地方调用它。
public static void hideKeyboard(Context ctx) {
InputMethodManager inputManager = (InputMethodManager) ctx
.getSystemService(Context.INPUT_METHOD_SERVICE);
// check if no view has focus:
View v = ((Activity) ctx).getCurrentFocus();
if (v == null)
return;
inputManager.hideSoftInputFromWindow(v.getWindowToken(), 0);
}
参考我的回答here