Android onclicklistener не вызывается после скрытия клавиатуры - PullRequest
0 голосов
/ 06 ноября 2019

В моем макете у меня есть editText и button.

I, которые клавиатура показывает или скрывает, если editText получает или теряет фокус. Чтобы добиться этого, я добавил OnFocusChangeListener к editText, и я скрываю или показываю клавиатуру, смотрящую на флаг hasFocus.

Проблема в том, что когда editText имеет фокус иклавиатура видна, если я нажимаю на кнопку, вызывается focusChangeListener, я скрываю клавиатуру, но не вызывается button onClickListener. Мне нужно снова нажать кнопку после того, как клавиатура скрыта.

Если вместо этого у меня была задержка (postDelayed({ hideKeyboard() }, 500)), когда editText теряет фокус, вызывается onClickListener.

Добавление задержки кажется хаком. Как я могу скрыть клавиатуру и все еще получать нажатие кнопки?

1 Ответ

0 голосов
/ 06 ноября 2019

скрыть клавиатуру вручную при нажатии на кнопку, используя этот метод, и удалить фокус слушателя

public void hideKeyboard(View view) {
    if (view != null) {
         InputMethodManager inputMethodManager = (InputMethodManager) 
            getSystemService(Context.INPUT_METHOD_SERVICE);
         inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
    }
}

для фокусировки на EditText при запуске экрана вы можете использовать <requestFocus/> в xml

...