Как открыть SearchView программно?
есть этот виджет для панели действий, которая называется "SearchView". Когда он не используется, он выглядит так:
и когда он используется, он выглядит так:
Я хочу (программно, конечно), чтобы открыть searchview (сделать его "в использовании").
я попробовал несколько функций, таких как:
SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
searchView.setOnQueryTextListener(this);
searchView.performClick();
searchView.requestFocus();
но ни один из них не работал...
SearchView в XML:
<item android:id="@+id/menu_search"
android:title="Search"
android:icon="@drawable/ic_action_search"
android:showAsAction="ifRoom|collapseActionView"
android:actionViewClass="android.widget.SearchView" />
4 ответа:
развернуть
SearchView
СsearchView.setIconified(false);
и свернуть его с
searchView.setIconified(true);
вам нужно изменить значение
android:showAsAction
СifRoom|collapseActionView
доalways
. Элемент Сandroid:iconifiedByDefault
должно бытьtrue
, которое является значением по умолчанию, в противном случае пользователь не сможет свернутьSearchView
после того, как он был расширен программно.
попробуйте позвонить
expandActionView()
на MenuItem, а не onActionViewExpanded() на ActionView.это работает для меня.
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);