Android SearchView: поиск снова при нажатии клавиши Spyglass
Я использую виджет SearchView для поиска текста в ListView.
При вводе текста открывается виртуальная клавиатура. Я хочу повторить поиск, когда нажата "шпионская клавиша".
Как я могу перехватить события виртуальной клавиатуры?
Примечание: не путайте клавишу spyglass, которая находится на виртуальной клавиатуре, внизу справа, со значком spyglass в виджете SearchView.
Я расскажу вам, что я пытался, и поэтому я знаю, что это не работает:
- onQueryTextChange () в SearchView
- onKeyListener () в SearchView
- TextWatcher () в SearchView
- dispatchKeyEvent () в ListView
1 ответ
Решение
Это решение, к которому я стремлюсь.
Я не нашел, как получить KeyEVent для "ключа Spyglass" (я думаю, что он такой же, как KEYCODE_ENTER), так что я сделал, чтобы включить кнопку отправки в SearchView, и я получил вызов onQueryTExtSubmit()
каждый раз, когда по нему щелкают (метод onQueryTextListener).
sv = (SearchView) findViewById(R.id.viewer_search);
sv.setOnQueryTextListener(searchListener);
sv.setSubmitButtonEnabled(true);
sv.setIconifiedByDefault(false);
А также
private OnQueryTextListener searchListener = new OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
// do my stuff
return true;
}
. . .