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



如何检测searchView上的点击?

我尝试过使用setOnClickListener、setOnSearchClickListener和setOnFocusChangedListener,但都没有用。

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

我试图解决的问题是,如果用户在任何地方点击,我需要关闭一个。但是我不知道如何处理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);
     }
 });

尝试将app:iconifiedByDefault="false"添加到布局XML中的SearchView标记中。

类似问题的答案:如何检测SearchView是否展开?

searchView.setOnQueryTextFocusChangeListener { _ , hasFocus ->
    if (hasFocus) {
        // searchView expanded
    } else {
        // searchView not expanded
    }
}

相关内容

  • 没有找到相关文章

最新更新