「SearchView」と呼ばれるActionBar用のこのウィジェットがあります。使用されていないときは、次のようになります。
そして、それが使用中の場合、次のようになります。
私は(もちろん、プログラムで)検索ビューを開きます(「使用中」にします)。
次のようないくつかの機能を試しました。
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
を折りたたむことができません。
ActionViewのonActionViewExpanded()ではなく、MenuItemのexpandActionView()
を呼び出してみてください。
わたしにはできる。
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()を呼び出して閉じてみてください。 getActionView()を介して実際のアクションビューでrequestFocus()を呼び出して、検索ビューにフォーカスを与えることができます:)