如何以编程方式closuresAndroid软键盘?

我目前使用下面的代码显示softkeyboard

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput (InputMethodManager.SHOW_FORCED, InputMethodManager.RESULT_HIDDEN); 

在这里,我没有绑定与Edittext软键盘,因为我已经使用了上述代码。

现在我想closuresSoftKeyboard,所以我目前使用下面的代码,但它不工作。

 imm.toggleSoftInput (InputMethodManager.SHOW_FORCED, InputMethodManager.RESULT_HIDDEN); 

任何人都可以build议我用什么来closuressoftKeyboard?


基于下面的答案我想让你清楚,我没有使用EditText,我使用布局,我想显示键盘和隐藏键盘。 我想发送键盘按键事件远程区域bcoz我没有使用editText。

我已经testing,这是工作:

 ... //to show soft keyboard imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); //to hide it, call the method again imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); 

顺便说一下,你的代码的第二个参数是不正确的,请看看这里 。

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

使用这个工作代码:

 InputMethodManager inputManager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE); inputManager.hideSoftInputFromWindow(getActivity().getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); 

如果你愿意,你可以使用整个类,并在任何地方调用KeyboardUtil.hideKeyBoard(context)方法:

 public class KeyboardUtil { public static void hideKeyboard(Activity activity) { try { InputMethodManager inputManager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE); inputManager.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); } catch (Exception e) { // Ignore exceptions if any Log.e("KeyBoardUtil", e.toString(), e); } } } 

user942821的隐藏它的答案工作:

 imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); 

但是这也适用于我隐藏它:

 imm.toggleSoftInput(0, 0); 

您可能还想尝试:

 imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT, 0); 

当在第一个参数中使用“0”时,有时候在奇怪的情况下,键盘会在错误的地方切换,我还没有弄清楚如何复制。 我仍在testing这个最后一个例子,但是当我发现更多的时候会更新。

有关更多信息,请参阅toggleSoftInput文档页面 。

这工作正常

 InputMethodManager keyboard = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); keyboard.hideSoftInputFromWindow(getWindow().getAttributes().token, 0); 

closures/隐藏Android软键盘

 View view = this.getCurrentFocus(); if (view != null) { InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(view.getWindowToken(), 0); } it's working for me i hope it's work for you.. 

打开Android软键盘

  InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); if (inputMethodManager != null) { inputMethodManager.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); } 

你也可以试试

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

这是解决scheme,它检查键盘是否可见

  public static void hideKeyboard(Activity activity) { if (isKeyboardVisible(activity)) { InputMethodManager imm = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE); imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0); } } public static boolean isKeyboardVisible(Activity activity) { ///This method is based on the one described at http://stackoverflow.com/questions/4745988/how-do-i-detect-if-software-keyboard-is-visible-on-android-device Rect r = new Rect(); View contentView = activity.findViewById(android.R.id.content); contentView.getWindowVisibleDisplayFrame(r); int screenHeight = contentView.getRootView().getHeight(); int keypadHeight = screenHeight - r.bottom; return (keypadHeight > screenHeight * 0.15); } 
 InputMethodManager im =(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); im.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); 

为了隐藏键盘,

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

在这里,“mView”可以是在屏幕上可见的任何视图

此代码隐藏在AutoCompleteTextView onItemClick内部的键盘

 public void onItemClick(AdapterView<?> adapterViewIn, View viewIn, int indexSelected, long arg3) { // whatever your code does InputMethodManager imm = (InputMethodManager) getSystemService(viewIn.getContext().INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(viewIn.getApplicationWindowToken(), 0); } 
 private void close() { this.requestHideSelf(0); } 

这个方法很简单