无需任何键盘操作即可在活动中隐藏软键盘

时间:2010-10-13 10:29:03

标签: android

我有一个标签视图,每个标签有一个Activity,当我从第一个带有TextView的标签切换到第二个标签时,它只显示一个可点击的列表,软键盘仍然存在。我希望它消失,所以我尝试了这个:

public static void hideSoftKeyboard (Activity activity, View view) {
  InputMethodManager imm = (InputMethodManager)activity.getSystemService(Context.INPUT_METHOD_SERVICE);
  imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}

但这不起作用,因为没有提供相关视图,因为屏幕上没有带键盘输入的View。关于如何解决这个问题的任何建议?

6 个答案:

答案 0 :(得分:16)

在代码的第3行尝试此操作:

imm.hideSoftInputFromWindow(view.getApplicationWindowToken(), 0);

答案 1 :(得分:16)

尝试Joe提供的答案:Stop EditText from gaining focus at Activity startup

将其放入活动清单中: android:windowSoftInputMode="stateHidden"

这是一个常见的问题,很高兴知道框架实际上很好地处理了这个问题。

答案 2 :(得分:4)

您也可以尝试

imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0 );

答案 3 :(得分:4)

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

答案 4 :(得分:0)

此方法可以帮助您以任何方式隐藏键盘。这对我来说很好用

public void hideKeyboard(Activity activity, View view) {
        if (activity != null ) {

            if(view != null)
            {
                try {
                    InputMethodManager imm = (InputMethodManager)this.getSystemService(Service.INPUT_METHOD_SERVICE);
                    imm.hideSoftInputFromWindow(view.getWindowToken(), 0); 
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }else
            {
                activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
            }

        }
    }

答案 5 :(得分:0)

在播放过渡动画时尝试隐藏键盘时,我遇到了类似的问题。

这对我有用:

imm.hideSoftInputFromWindow(activity.getWindow().getDecorView().getWindowToken(), 0)