SearchView提交后,SearchView不响应点击次数

时间:2017-01-06 21:03:57

标签: android onclicklistener searchview

我的应用包含标准的SearchView小部件。从下面的代码中可以看出,我正在设置OnClickListener,OnCloseListener和OnQueryTextListener。

如果我点按SearchView,它最初会按预期响应。如果我输入文本并按下键盘上的搜索按钮,则OnQueryTextListener会正确触发,并且按照searchView.setIconified(true)关闭键盘。但是,如果我现在再次点击SearchView,则不会触发OnClickListener。键盘仍然出现,字段变得可编辑,但我的OnClickListener中的代码未执行。

如果我使用" X"在此之后关闭搜索视图的图标,一切都恢复正常。下次我点击SearchView时,我的听众就会被解雇。

我有额外的代码,每次点击SearchView时都需要执行。

在这个特定情况下,什么可能导致侦听器无法触发?我还应该在OnQueryTextSubmit中做些什么吗?

    searchView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            filterLayout.setVisibility(View.VISIBLE);
            searchView.setIconified(false);
            System.out.println("on click");
        }
    });


    searchView.setOnCloseListener(new SearchView.OnCloseListener() {
        @Override
        public boolean onClose() {
            filterLayout.setVisibility(View.INVISIBLE);

            return false;
        }
    });

    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {

            searchView.setIconified(true);

            return false;
        }

        @Override
        public boolean onQueryTextChange(String newText) {
            return false;
        }
    });

1 个答案:

答案 0 :(得分:1)

我找到了这个问题的半答案。如果我在提交查询时清除searchView的焦点,那么当用户下一次点击searchView时,OnQueryTextFocusChangeListener将获得一个调用。它并没有完全回答我原来的问题,但对我的案例来说,这是一个可接受的解决方法。