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

时间:2010-12-29 06:11:24

标签: java android android-emulator virtual-keyboard

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

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

6 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

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

希望这有帮助。

答案 2 :(得分:2)

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

答案 3 :(得分:2)

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

例如:

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

如果您使用上述方法打开键盘,则可以尝试使用SHOW_FORCED值更改SHOW_IMPLICIT

例如:

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

  1. 通过添加以下属性,使父视图(活动的内容视图)可单击并可聚焦

        android:clickable="true" 
        android:focusableInTouchMode="true" 
    
  2. 实现hideKeyboard()方法

        public void hideKeyboard(View view) {
            InputMethodManager inputMethodManager =(InputMethodManager)getSystemService(Activity.INPUT_METHOD_SERVICE);
            inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_IMPLICIT_ONLY);
        }
    
  3. 最后,设置edittext的onFocusChangeListener。

        edittext.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (!hasFocus) {
                    hideKeyboard(v);
                }
            }
        });
    
  4. Source