私は次のようなメニュー項目を持っています:
_<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
}
}
In Java:
searchView.setOnQueryTextFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
// searchView expanded
} else {
// searchView not expanded
}
}
});