首页 文章

为什么虚拟键盘不会消失?

提问于
浏览
6

我有一个非常简单的屏幕,有几个EditText小部件和一个按钮 . 在模拟器中,当我单击EditText小部件时,会出现一个虚拟键盘 . 但是,我似乎无法摆脱它 . 单击屏幕上的空白区域不会使其消失 . 只需单击虚拟返回键或硬件后退按钮即可消失 .

我没有真正的Android手机,所以这只是一个模拟器,或者在实际设备上会是这样的 . 如果是,当我点击表单上的其他地方时,我该怎么做才能使虚拟键盘消失?

6 回答

  • 0

    我想在模拟器中你可以按Escape来隐藏键盘 . 在真实设备上,键盘上有一个隐藏按钮,或者您可以按下ui中的其他位置 . 无论如何,这就是我的HTC Desire S的工作方式 .

  • 3

    AngryHacker,我想推荐你发表这篇文章how to close/hide the android soft keyboard .

    希望这可以帮助 .

  • 0

    单击后退按钮 . 他们键盘是一项活动 . 单击屏幕的随机区域时,没有一种简单的方法可以移除键盘 .

  • 2

    我住这个问题,我解决了 . 此问题与我的项目中的 InputMethodManager.SHOW_FORCED 值有关 . 当我使用 SHOW_FORCED 打开键盘时,当我尝试关闭键盘时,键盘没有关闭 .

    例如 :

    activity.getSystemService(Context.INPUT_METHOD_SERVICE)).showSoftInput(view, InputMethodManager.SHOW_FORCED);
    

    如果您使用上述方式打开键盘,您可能会尝试使用 SHOW_IMPLICIT 值更改 SHOW_FORCED

    例如 :

    activity.getSystemService(Context.INPUT_METHOD_SERVICE)).showSoftInput(view, InputMethodManager.SHOW_IMPLICIT);
    
  • 3

    我有运行Andriod 2.3.6的Galaxy S2 .
    在登录网站时输入所需文本后,我的键盘问题没有移开 . 我发现点击硬件返回按钮确实会使虚拟键盘不受影响 . 但偶尔会有网页浏览器返回一页 . 这令人沮丧,因为我必须重新输入我正在连接的任何网站的登录信息 . 希望Android 4.x已经解决了一些这些棘手的问题 .

  • 2

    您可以通过执行以下步骤来实现此目的:

    • 通过添加以下属性,使父视图(活动的内容视图)可单击并可聚焦
    android:clickable="true" 
        android:focusableInTouchMode="true"
    
    • 实现hideKeyboard()方法
    public void hideKeyboard(View view) {
            InputMethodManager inputMethodManager =(InputMethodManager)getSystemService(Activity.INPUT_METHOD_SERVICE);
            inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_IMPLICIT_ONLY);
        }
    
    • 最后,设置edittext的onFocusChangeListener .
    edittext.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (!hasFocus) {
                    hideKeyboard(v);
                }
            }
        });
    

    Source

相关问题