110

「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" />
4

8 に答える 8

273

SearchViewで展開

searchView.setIconified(false);

そしてそれを折りたたむ

searchView.setIconified(true);

android:showAsActionの値をからifRoom|collapseActionViewに変更する必要がありますalways。のSearchView属性は、デフォルト値である であるandroid:iconifiedByDefault必要があります。そうでない場合、ユーザーは、プログラムで展開された後に を折りたたむことができません。trueSearchView

于 2013-01-09T13:12:47.707 に答える
13

必要なときだけサポート ライブラリを使用する場合は、次のようにします。

    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);
于 2015-06-17T22:05:29.097 に答える
6

私はこれが遅いことを知っていますが、

expandActionView() を呼び出して開き、collapseActionView() を呼び出して閉じてみてください。getActionView() を介して実際のアクションビューで requestFocus() を呼び出して、検索ビューにフォーカスを与えることができます:)

于 2013-03-10T22:26:32.797 に答える