Я имею Activity
с EditText
, кнопка и a ListView
. Цель состоит в том, чтобы ввести поисковый экран EditText
, нажмите кнопку и имейте результаты поиска, заполняют этот список.
Это все работает отлично, но виртуальная клавиатура ведет себя странная.
Если я нажимаю EditText
, Я получаю виртуальную клавиатуру. Если я нажимаю кнопку "Done" на виртуальной клавиатуре, она уходит. Однако, если я нажимаю свою кнопку поиска прежде, чем нажатие "Done" на виртуальную клавиатуру, виртуальная клавиатура остается, и я не могу избавиться от него. Нажатие на кнопку "Done" не закрывает клавиатуру. Это изменяет кнопку "Done" от "Сделанного" до стрелки и остается видимым.
Спасибо за помощь
Вы должны реализовать 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' на виртуальной клавиатуре и кнопке будет делать то же самое - скрывать клавиатуру и выполнять действие нажатия.