レイアウトの上部に(アクションバーではなく)SearchView
がありますが、とにかくこのView
を常に展開する(開く)ように強制することはできますか?
そうでない場合、派手な画像を近くに配置したいのですが、とにかくSearchView
を展開(クリック/展開)したときにこの画像を非表示にすることはできますか?
プロパティ_Android:iconifiedByDefault="false"
_をXMLで使用するか、プログラムでsetIconifiedByDefault(false)
に設定できます。ドキュメントによると、このプロパティはSearchView
を希望どおりに展開します。
SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
searchItem.expandActionView();
そして、メニューファイルで、使用
showAsAction="ifRoom|collapseActionView"
質問があれば、気軽にコメントしてください。
使用してみることができます
searchView.onActionViewExpanded();
キーボードを開く必要がない場合
searchView.clearFocus();
私はこれをフラグメントにしています、私はそれを使ってそれをしました
searchItem.expandActionView();
しかし、ユーザーが戻るボタンを押すと折りたたまれるので、折りたたみメソッドで使用しました
getActivity().getSupportFragmentManager().popBackStack();
// when it collapsed i am going back
以下は私のソリューションの詳細です:
search_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto">
<item Android:id="@+id/search_contacts"
Android:title="search"
Android:icon="@drawable/search2"
app:showAsAction="ifRoom|collapseActionView"
app:actionViewClass="Android.support.v7.widget.SearchView" >
</item>
</menu>
以下のコードで使用するフラグメントiで:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.search_menu, menu);
// Define the listener
MenuItemCompat.OnActionExpandListener expandListener = new MenuItemCompat.OnActionExpandListener() {
@Override
public boolean onMenuItemActionCollapse(MenuItem item)
{
getActivity().getSupportFragmentManager().popBackStack();
// Do something when action item collapses
return true; // Return true to collapse action view
}
@Override
public boolean onMenuItemActionExpand(MenuItem item)
{
// Do something when expanded
return true; // Return true to expand action view
}
};
MenuItem searchItem = menu.findItem(R.id.search_contacts);
// Assign the listener to that action item
MenuItemCompat.setOnActionExpandListener(searchItem, expandListener);
// Any other things you have to do when creating the options menu…
SearchView searchView =
(SearchView) MenuItemCompat.getActionView(searchItem);
//searchView.setIconifiedByDefault(false);
searchItem.expandActionView(); // when fragment opens it expanded auto
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText)
{
seachViewFunction(newText); // in searchViewFunction(newText); i am doing my things
return false;
}
});
super.onCreateOptionsMenu(menu, inflater);
}