Как открыть программу SearchView программно?

Этот виджет для ActionBar называется «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" /> 

Solutions Collecting From Web of "Как открыть программу SearchView программно?"

Разверните SearchView с помощью

 searchView.setIconified(false); 

И свернуть его с помощью

 searchView.setIconified(true); 

Вам нужно изменить значение android:showAsAction из ifRoom|collapseActionView always . SearchView 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); 

Я знаю, что это поздно, но

Попробуйте вызвать expandActionView (), чтобы открыть его и свернутьActionView (), чтобы закрыть его. Вы можете вызвать requestFocus () в действительном представлении действий через getActionView (), чтобы дать фокус поиска. 🙂