如何检测 SearchView 上任意位置的点击

How to detect a click anywhere on a SearchView

如何检测对 searchView 的点击?

我尝试过使用 setOnClickListener、setOnSearchClickListener、setOnFocusChangedListener,但都无济于事。

问题似乎只是点击文本框。如果我点击文本框外的任何地方 onClickListener 触发,但如果点击文本框内则不会。

我要解决的问题是,如果用户点击任何地方,我需要关闭一个。但是我不知道如何处理 SearchView。

我找到了解决问题的方法。 这有点骇人听闻,但它确实有效。您必须从 searchView 获取 editText 并将 OnClickListener 设置为它

    int id = searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null);
    EditText editText = (EditText) searchView.findViewById(id);
    editText.setOnClickListener(listener);

试试这个:

searchView = (SearchView)findViewById(R.id.searchView);
searchView.setOnClickListener(new View.OnClickListener() {
         @Override
     public void onClick(View v) {
         searchView.setIconified(false);
     }
 });