如何检测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的输入发送到该活动的视图寻呼机中的片段
在android中使用viewpager的带有多个片段的SearchView