0

我正在使用 SearchView 小部件在 ListView 中搜索文本。
输入文本时,会打开一个虚拟键盘。当按下“望远镜键”时,我想重复搜索。
如何拦截虚拟键盘按键事件?

注意:不要将虚拟键盘中右下角的望远镜键与 SearchView 小部件中的望远镜图标混淆。

我会告诉你我尝试了什么,因此我知道它不起作用:

  • SearchView 上的 onQueryTextChange()
  • SearchView 上的 onKeyListener()
  • SearchView 上的 TextWatcher()
  • ListView 上的 dispatchKeyEvent()
4

1 回答 1

2

这是我想要的解决方案。
我还没有找到如何为“spyglass key”获取 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; 
    }

    . . .
于 2013-02-27T11:49:26.730 回答