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; 
    }

    . . .
Другие вопросы по тегам