如何检测SearchView是否已扩展?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何检测SearchView是否已扩展?相关的知识,希望对你有一定的参考价值。

我有菜单项,如:

<item
    android:id="@+id/action_search"
    android:title="search"
    app:actionViewClass="android.support.v7.widget.SearchView"
    app:showAsAction="always"/>

@Override
public boolean onCreateOptionsMenu( Menu menu ) {
  getMenuInflater().inflate( R.menu.passenger, menu );
  searchItem = menu.findItem( R.id.action_search );
  searchView = (SearchView)MenuItemCompat.getActionView( searchItem );
  searchView.setSubmitButtonEnabled( false );
  return super.onCreateOptionsMenu( menu );
}

我想检查searchView是否已展开。

我尝试了searchItem.isActionViewExpanded()searchView.isHovered(),但没有一个奏效。

我错过了什么?

TIA

答案

试试searchItem.isIconified()

返回SearchView的当前图标化状态。

返回

如果SearchView当前已图标化,则为true;如果搜索字段完全可见,则为false。

http://developer.android.com/reference/android/widget/SearchView.html#isIconified%28%29

另一答案
searchView.setOnSearchClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //do what you want when search view expended
            }
        });
        searchView.setOnCloseListener(new SearchView.OnCloseListener() {
            @Override
            public boolean onClose() {
                //do what you want  searchview is not expanded
                return false;
            }
        });
另一答案

试试这个,它会检测用户点击搜索图标的时间:

在Kotlin:

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

在Java中:

searchView.setOnQueryTextFocusChangeListener(new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if (hasFocus) {
            // searchView expanded
        } else {
            // searchView not expanded
        }
    }
});

以上是关于如何检测SearchView是否已扩展?的主要内容,如果未能解决你的问题,请参考以下文章

已解决:SearchView 不会在 TabLayout 的每个子选项卡中进行过滤

如何从所有片段中使用工具栏中的 SearchView

如何将活动中的searchview的输入发送到该活动的视图寻呼机中的片段

在android中使用viewpager的带有多个片段的SearchView

RecyclerView 的 SearchView 不起作用

用户输入后禁用edittext searchview