默认软键盘不会隐藏在Nexus选项卡或虚拟机中

时间:2015-01-30 06:09:57

标签: android keyboard android-softkeyboard

我正在开发一个应用程序,我在我的应用程序中使用自定义键盘输入用户。问题是当我在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();
        }
    }
  • 我甚至在这个论坛上搜索过很多类似的问题 尝试了大多数这些解决方案,但这没有帮助。任何的想法 为什么这适用于手机,不适用于Nexus Tab和Virtual 机????

2 个答案:

答案 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);
}