1

SearchView をメニューに追加すると (以下の例を参照)、そのアイコンは変更されず、非標準的な方法で動作します。たとえば、検索メニュー ボタンを長くクリックすると、テキストSearchがポップされるはずですが、そうではありません。

その動作をより標準的なものに変更するにはどうすればよいですか? アイコンとロングクリックは今のところ。他にも問題があると思います)

ビューを追加するためのコード サンプル:

MenuItem item = menu.add("Search");
SearchView sv = new SearchView(getActivity());
item.setActionView(sv);
item.setIcon(drawable.menu_search);
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);

ありがとう。

4

1 に答える 1

6

更新:コードから可能です。toMenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEWのコンテキストを追加して変更する必要があります。SearchViewgetActionBar().getThemedContext()

MenuItem item = menu.add("Search");
SearchView sv = new SearchView(getActionBar().getThemedContext());
item.setActionView(sv);
item.setIcon(R.drawable.ic_search);
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW
        | MenuItem.SHOW_AS_ACTION_IF_ROOM);

SearchView推奨される方法ではないコードからアクション アイテムを作成しようとしています。次のような検索項目を含むメニュー リソースを定義します。

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/search"
        android:actionViewClass="android.widget.SearchView"
        android:icon="@drawable/ic_search"
        android:showAsAction="collapseActionView|ifRoom"
        android:title="@string/search_title"/>

</menu>

で膨らませるonCreateOptionsMenu:

public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

これで問題は解決します。詳細については、Android ドキュメントのアクション バーに検索ビューを追加するを参照してください。

于 2013-05-05T11:50:44.790 に答える