Как программно закрыть Android Soft KeyBoard? - PullRequest
48 голосов
/ 09 января 2012

В настоящее время я показываю программную клавиатуру, используя следующий код

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

И здесь я не привязывал программную клавиатуру к Edittext, потому что я использовал вышеуказанный код.

Теперь яхочу закрыть SoftKeyboard, поэтому в настоящее время я использую приведенный ниже код, но он не работает.

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

Может кто-нибудь предложить мне, что использовать для закрытия softKeyboard?


На основеВ разделе «Ниже ответа» я хочу дать вам понять, что я не использую EditText, я использую макет, на котором я хочу показать клавиатуру и Скрыть клавиатуру.Я хочу отправить событие клавиатуры в удаленную область, потому что я не использовал editText.

Ответы [ 13 ]

0 голосов
/ 25 августа 2016

Вот решение s, которое проверяет, видна ли клавиатура

    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 /3120158/kak-opredelit-vidna-li-programmnaya-klaviatura-na-ustroistve-android
        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);
    }
0 голосов
/ 29 марта 2015
private void close() {
    this.requestHideSelf(0);
}

этот метод очень прост

0 голосов
/ 09 января 2012

Вы также можете попробовать

this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...