离开编辑框时如何隐藏软键盘?

时间:2011-02-24 21:12:37

标签: android

用户使用键盘输入编辑框后,我希望键盘隐藏,以便我可以在屏幕底部附近看到结果。我已经在我的onCreate方法中尝试了这个但它不起作用。我错过了什么?

InputMethodManager imm =                                  
      (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditTextbox.getWindowToken(), 0); 

5 个答案:

答案 0 :(得分:3)

您可以强行隐藏键盘:

Window window = getWindow();
                window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

我会在你的onCreate方法和onFocusChanged()方法或OnKeyListener()中隐藏键盘。

答案 1 :(得分:2)

您是否设置了密钥监听器?

你并没有真正说明用户输入文字的方式,所以我假设他们按下了软键盘上的输入按钮。以下是我处理这种情况的方法。我在Dialog和Activity中都成功使用了这个。希望它有所帮助。

this.setOnKeyListener(new OnKeyListener()
{
     /**
      * This listens for the user to press the enter button on 
      * the keyboard and then hides the virtual keyboard
      */
     @Override
     public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event)
     {
        // If the event is a key-down event on the "enter" button
        if ( (event.getAction() == KeyEvent.ACTION_DOWN  ) &&
             (keyCode           == KeyEvent.KEYCODE_ENTER)   )
        {               
           // hide virtual keyboard
           InputMethodManager imm = 
              (InputMethodManager)getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
           imm.hideSoftInputFromWindow(sessionTag.getWindowToken(), 0);
           return true;
        }
        return false;
     }
  }); 

答案 2 :(得分:1)

EditText参数为onFocusChanged()时,您可以扩展focused类并使用false方法中的代码。

答案 3 :(得分:1)

这取决于当前有什么焦点...如果它的另一个editText需要关注,那么这可能会调出键盘...尝试明确地将焦点放在另一个元素上......

答案 4 :(得分:0)

按照这个答案。在活动中setContentView之后调用该方法。

https://stackoverflow.com/a/11656129/1066839