如何以编程方式打开SearchView?
有一个名为“SearchView”的ActionBar小部件。 当它不被使用时,它看起来像这样:
当它被使用时,它看起来像这样:
我想(编程当然)打开searchview(使其“使用”)。
我尝试了几个function,如:
SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView(); searchView.setOnQueryTextListener(this); searchView.performClick(); searchView.requestFocus();
但没有一个工作…
XML中的SearchView:
<item android:id="@+id/menu_search" android:title="Search" android:icon="@drawable/ic_action_search" android:showAsAction="ifRoom|collapseActionView" android:actionViewClass="android.widget.SearchView" />
用。展开SearchView
searchView.setIconified(false);
并用它折叠
searchView.setIconified(true);
您需要将android:showAsAction
的值从ifRoom|collapseActionView
更改为always
。 SearchView
的属性android:iconifiedByDefault
应该为true
,这是默认值,否则用户无法折叠SearchView
之后,它以编程方式展开。
尝试在MenuItem上调用expandActionView()
,而不是在ActionView上调用onActionViewExpanded()。
这个对我有用。
MenuItem searchMenuItem = menu.findItem(R.id.menu_search); searchView = (SearchView) searchMenuItem.getActionView(); searchMenuItem.expandActionView();
如果只在必要时使用支持库,请执行此操作
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);
我知道这是迟到了,但是
尝试调用expandActionView()来打开它,并使用collapseActionView()来closures它。 你可以通过getActionView()在实际的Action View上调用requestFocus()给search视图焦点:)