隐藏软键盘没有焦点

时间:2015-03-26 11:08:45

标签: android keyboard android-softkeyboard

我正在使用FrameLayout来交替显示EditTextListView(带复选框)。显示EditText时,我希望显示软键盘。在显示ListView时,我希望隐藏软键盘。现在通常需要关注以隐藏软键盘。展示ListView后,getCurrentFocus()会返回null。有没有办法隐藏软键盘,没有焦点?

我正在展示这样的软键盘:

public static void requestFocusAndMoveCursorToTheEndAndShowKeyboard(final EditText editTextParam, final Activity activityParam) {
    if (editTextParam == null) {
        return;
    }

    if (editTextParam.requestFocus()) {
        editTextParam.setSelection(editTextParam.getText().length()); // move Cursor to the end of the EditText
        InputMethodManager imm = (InputMethodManager) activityParam.getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
    }
}

我试图像这样隐藏软键盘:

public static void hideSoftInputKeyboardFromWindow(Activity activityParam) {
    if (activityParam == null) {
        return;
    }

    View view = activityParam.getCurrentFocus();
    if (view != null) {
        InputMethodManager inputMethodManager = (InputMethodManager) activityParam.getSystemService(Context.INPUT_METHOD_SERVICE);
        inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
    }
}

6 个答案:

答案 0 :(得分:2)

如果您不想关注edittext,请在edittext上使用.clearFocus();

答案 1 :(得分:1)

在你的AndroidManifest.xml中添加:

<activity android:name="com.your.package.ActivityName"
      android:windowSoftInputMode="stateHidden"  />

答案 2 :(得分:0)

试试这个: 将以下方法写入youractivity或您的实用程序类

/**
 * Hide soft keypad
 * 
 */


public static void hideKeyboard(Activity activity, View v) {
        InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
    }

答案 3 :(得分:0)

hideSoftInputKeyboardFromWindow方法中,尝试:

inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);

而不是

inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);

编辑:和Dorami一样答案

答案 4 :(得分:0)

如何交替显示它们?使用不同的片段?或者你只是夸大不同的布局?使用完整的代码提供更多详细信息

答案 5 :(得分:0)

感谢您的回答。最后,我使用View.OnFocusChangeListener为EditText解决了问题,如下所述:

Hide soft keyboard on losing focus