问题
ActionBar有一个名为"SearchView"的小部件。当它不使用时,它看起来像这样:
当它在使用时,它看起来像这样:
我想(当然是以编程方式)打开searchview(使其"正在使用")。
我尝试了几个功能,例如:
SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
searchView.setOnQueryTextListener(this);
searchView.performClick();
searchView.requestFocus();
但这些都没有奏效......
XML中的SearchView:
android:title="Search"
android:icon="@drawable/ic_action_search"
android:showAsAction="ifRoom|collapseActionView"
android:actionViewClass="android.widget.SearchView" />
#1 热门回答(210 赞)
展开SearchViewwith
searchView.setIconified(false);
用它来折叠它
searchView.setIconified(true);
你需要将值android:showAsAction从ifRoom|collapseActionView更改为always。 SearchView的属性android:iconifiedByDefault应为true,这是默认值,否则用户在以编程方式扩展后无法折叠SearchView。
#2 热门回答(63 赞)
尝试在ActionView上调用expandActionView(),而不是在ActionView上调用onActionViewExpanded()。
这个对我有用。
MenuItem searchMenuItem = menu.findItem(R.id.menu_search);
searchView = (SearchView) searchMenuItem.getActionView();
searchMenuItem.expandActionView();
#3 热门回答(11 赞)
如果你只想在必要时使用支持库,请执行此操作
MenuItem searchMenuItem = menu.findItem(R.id.action_search);
if (Utils.hasIceCreamSandwich())
searchMenuItem.expandActionView();
else MenuItemCompat.expandActionView(searchMenuItem);
否则只是这样做
MenuItem searchMenuItem = menu.findItem(R.id.action_search);
MenuItemCompat.expandActionView(searchMenuItem);