每当我专注于某些编辑字段并且Dialog显示时,它会在我解除()后立即拉出软键盘;对话。我已经尝试过各种方法在点击事件后删除它,但无论我做什么它仍然显示。
public static void hideSoftInput(FragmentActivity _activity){
if(_activity.getCurrentFocus() != null){
InputMethodManager inputManager = (InputMethodManager) _activity.getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(_activity.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
}
public static void hideSoftInput(View _v, Context _c){
if(_v.getWindowToken() != null){
InputMethodManager inputManager = (InputMethodManager) _c.getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(_v.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
}
答案 0 :(得分:1)
我现在无法找到它,但是此处的其他人建议在postDelayed呼叫中包裹呼叫以隐藏键盘。
当许多其他选项失败时,它对我有用。唯一的问题是,它可能会给屏幕带来一个有趣的微笑,因为你会在试图显示时压制键盘。如果没有postDelayed,它似乎会在Android尝试在对话框关闭后显示它之前尝试隐藏键盘。因此,最终我们必须在Android中解决计时问题。
这样的事情:
view.postDelayed(new Runnable()
{
@Override
public void run()
{
hideKeyboard();
}
}, 50);