Предотвращение отклонения программной клавиатуры - PullRequest
10 голосов
/ 29 июля 2010

Есть много вопросов, связанных с тем, как программно показать / скрыть программную клавиатуру.

Однако, как мы все знаем, кнопка «назад» для Android приведет к отклонению клавиатуры. Есть ли способ запретить пользователю отклонять клавиатуру нажатием кнопки «назад»?

Я пытался захватить кнопку «назад», но когда клавиатура отображается на «KeyDown», в моей активности не вызывается, когда нажата кнопка «Назад» и видна программная клавиатура.

Любые предложения будут с благодарностью.

Ответы [ 2 ]

4 голосов
/ 01 июня 2016

Я нашел решение:

public class KeyBoardHolder extends EditText {
    public KeyBoardHolder(Context context) {
        super(context);
    }

    public KeyBoardHolder(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public KeyBoardHolder(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    public KeyBoardHolder(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
    }

    @Override
    public boolean onKeyPreIme(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            return true;
        }
        return false;
    }
}

Это предотвращает закрытие клавиатуры кнопкой назад.

2 голосов
/ 06 ноября 2011

Я сделал это, используя следующие два метода:

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK)     
    {
        ((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput
                (InputMethodManager.SHOW_FORCED,InputMethodManager.HIDE_IMPLICIT_ONLY);
    }
    return super.onKeyUp(keyCode, event);
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK)     
    {
        ((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput
                (InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
    }
    return super.onKeyDown(keyCode, event);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...