Android:单击button后隐藏键盘

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

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

例如

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

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

谢谢

马丁

  • Android隐藏应用程序
  • 我如何隐藏一个活动的菜单button
  • android:如何隐藏文件夹出现在图库中
  • 在本地模拟USB /蓝牙HID设备以注入事件?
  • 在Android的webview中隐藏在键盘下面的文本框
  • 您可以改为将其设置为您的布局,即:

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