Android SearchView: повторный поиск при нажатии клавиши подзорной трубы

Я использую виджет SearchView для поиска текста в ListView.
При вводе текста открывается виртуальная клавиатура. Я хочу повторить поиск при нажатии "клавиши подзорной трубы".
Как я могу перехватить события клавиш виртуальной клавиатуры?

Примечание: не путайте клавишу подзорной трубы, которая находится на виртуальной клавиатуре справа внизу, со значком подзорной трубы в виджете SearchView.

Я скажу вам, что я пробовал, и поэтому я знаю, что это не работает:

  • onQueryTextChange() в SearchView
  • onKeyListener() в SearchView
  • TextWatcher() в SearchView
  • dispatchKeyEvent() в ListView

person ilomambo    schedule 27.02.2013    source источник
comment
Здесь есть интересный обходной путь: SearchView прослушивает действия IME   -  person Richard Le Mesurier    schedule 28.10.2015


Ответы (1)


Это решение, к которому я стремлюсь.
Я не нашел, как получить KeyEVent для "ключа подзорной трубы" (думаю, это то же самое, что и 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; 
    }

    . . .
person ilomambo    schedule 27.02.2013