如何检测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
}
}