Android:单击button后隐藏键盘

点击button后,我需要隐藏安卓键盘

我已经看到了很多如何做到这一点的例子,但是,他们似乎都使用了一个特定的editText对象。

例如

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

我的问题是,我正在dynamic构build屏幕,因此可能会有鬃毛编辑文本字段。 有没有一种方法可以隐藏键盘,而不必指定我隐藏的EditText对象。

谢谢

马丁

Related of "Android:单击button后隐藏键盘"

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

 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); 

这是一个例子,假设你的布局将被创build,而不pipe有多less个EditText对象(或其他对象)被放置在它上面。

编辑:此外,我觉得非常有用的是确保键盘被隐藏,当一个活动第一次启动(即:如果一个EditText是第一件事集中)。 要做到这一点,我把这个onCreate()方法的Activity:

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

不要忘记使用尝试赶上博客,因为在你的键盘没有打开的情况下,如果你使用钥匙键盘隐藏代码的应用程序将崩溃

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

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

 //================ 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 } 

这将处理在button点击时隐藏键盘或在事件块中写入时被视为特定的任何其他事件。

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