android 如何检测在SearchView上的任意位置单击

ttcibm8c  于 2022-11-27  发布在  Android
关注(0)|答案(4)|浏览(132)

如何检测searchView上的点击?
我尝试过使用setOnClickListener、setOnSearchClickListener、setOnFocusChangedListener,但都无济于事。
问题似乎只在于单击文本框。如果我单击文本框之外的任何地方,onClickListener都会触发,但如果单击文本框内部,则不会触发。
我试图解决的问题是,如果用户点击任何地方,我需要关闭a。但我不知道如何处理searchview。

v64noz0r

v64noz0r1#

我已经找到了解决问题的方法。虽然有点像黑客,但它确实有效。您必须从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);
kninwzqo

kninwzqo2#

试试这个:

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

sqserrrh3#

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

pw9qyyiw

pw9qyyiw4#

类似问题的答案:How to detect if SearchView is expanded?

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

相关问题