Близкая виртуальная клавиатура на нажатии кнопки

Я имею Activity с EditText, кнопка и a ListView. Цель состоит в том, чтобы ввести поисковый экран EditText, нажмите кнопку и имейте результаты поиска, заполняют этот список.

Это все работает отлично, но виртуальная клавиатура ведет себя странная.

Если я нажимаю EditText, Я получаю виртуальную клавиатуру. Если я нажимаю кнопку "Done" на виртуальной клавиатуре, она уходит. Однако, если я нажимаю свою кнопку поиска прежде, чем нажатие "Done" на виртуальную клавиатуру, виртуальная клавиатура остается, и я не могу избавиться от него. Нажатие на кнопку "Done" не закрывает клавиатуру. Это изменяет кнопку "Done" от "Сделанного" до стрелки и остается видимым.

Спасибо за помощь

130
задан Android Man 6 February 2015 в 04:28
поделиться

1 ответ

Вы должны реализовать OnEditorActionListener для вашего EditView

public void performClickOnDone(EditView editView, final View button){
    textView.setOnEditorActionListener(new OnEditorActionListener() {

        @Override
        public boolean onEditorAction(EditView v, int actionId, KeyEvent event) {
            hideKeyboard();
            button.requestFocus();
            button.performClick();
            return true;
        }
    });

И вы скрываете клавиатуру с помощью:

public void hideKeybord(View view) {
    inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(),
                                  InputMethodManager.RESULT_UNCHANGED_SHOWN);
}

Вы также должны включить скрытие клавиатуры в вашей кнопке с помощью onClickListener

Теперь нажатие 'Done' на виртуальной клавиатуре и кнопке будет делать то же самое - скрывать клавиатуру и выполнять действие нажатия.

13
ответ дан 24 November 2019 в 00:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: