Android:点击按钮后隐藏键盘

单击按钮后我需要隐藏android键盘

我已经看到了许多如何执行此操作的示例,但是,它们似乎都使用特定的editText对象。

例如

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

我的问题是我正在动态构建屏幕,因此可能存在鬃毛编辑文本字段。 有没有办法隐藏键盘而不必指定我隐藏它的editText对象。

谢谢

马丁

    您可以将其设置为您的布局,即:

     LinearLayout mainLayout; // Get your layout set up, this is just an example mainLayout = (LinearLayout)findViewById(R.id.myLinearLayout); // Then just use the following: InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(mainLayout.getWindowToken(), 0); 

    这是一个示例,假设无论在其上放置多少EditText对象(或其他对象),都将创建布局。

    编辑:此外,我觉得非常有用的是确保在活动首次启动时隐藏键盘(即:如果EditText是第一个关注的事情)。 为此,我把它放在Activity的onCreate()方法中:

      this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 

    别忘了使用try catch blog,因为万一你的键盘没有打开,如果你使用键盘隐藏代码应用程序将崩溃

     try { InputMethodManager imm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0); } catch (Exception e) { // TODO: handle exception } 

    您可以使用以下代码隐藏键盘,可能在按钮单击事件上:

     //================ Hide Virtual Key Board When Clicking==================// InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow("Your Button/EditText Object".getWindowToken(), InputMethodManager.RESULT_UNCHANGED_SHOWN); //======== Hide Virtual Keyboard =====================// 

    您使用此代码

     // Check if no view has focus: View view = this.getCurrentFocus(); if (view != null) { InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(view.getWindowToken(), 0); } 

    如果问题出在活动上,则以下内容将起作用:

      try { InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0); } catch (Exception e) { // TODO: handle exception } 

    否则,如果片段中需要代码,请执行以下操作

      try { InputMethodManager imm = (InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(getActivity().getCurrentFocus().getWindowToken(), 0); } catch (Exception e) { // TODO: handle exception } 

    这将处理在按钮单击时隐藏键盘或在事件块内写入时认为特定的任何其他事件。

     edittext.onEditorAction(EditorInfo.IME_ACTION_DONE); 
     InputMethodManager inputManager = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); inputManager.hideSoftInputFromWindow(rootView.getWindowToken(), 0);