我正在开发一个应用程序,我在我的应用程序中使用自定义键盘输入用户。问题是当我在Nexus Tab或Virtual Box虚拟机上运行我的应用程序时,默认软键盘不会隐藏。它甚至没有在Tab和VM上弹出我的自定义软键盘,但是当我在Android手机上运行应用程序时它运行正常。我使用以下代码隐藏默认软键板:
public static void hideKeyboard(Context context, View v) {
try {
Log.v("hideKeyboard", "Inside hideKeyboard");
InputMethodManager inputManager = (InputMethodManager) context
.getSystemService(Context.INPUT_METHOD_SERVICE);
Log.v("hideKeyboard", "InputMethodManager created");
View view = ((Activity) context).getCurrentFocus();
if (view != null) {
Log.v("View found:", "nn");
inputManager.hideSoftInputFromWindow(view.getWindowToken(),
InputMethodManager.HIDE_IMPLICIT_ONLY);
Log.v("HIDE_NOT_ALWAYS:", "nn");
}
} catch (Exception e) {
e.printStackTrace();
}
}
答案 0 :(得分:0)
尝试使用此代码,这可能会有效,因为它与我的vm
完美配合public static void hideKeypad(Activity activity)
{
try
{
InputMethodManager imm = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE);
// imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0); //
// hide
imm.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_IMPLICIT_ONLY);
} catch (Exception e)
{
e.printStackTrace();
}
}
答案 1 :(得分:0)
调用波纹管方法之类的 hideKeyboard(getApplicationContext(), editText.getWindowToken())。
public void hideKeyboard(Context c, IBinder windowToken) {
InputMethodManager mgr = (InputMethodManager) c
.getSystemService(Context.INPUT_METHOD_SERVICE);
mgr.hideSoftInputFromWindow(windowToken, 0);
}