如何使SearchView以标准方式运行?

时间:2013-05-02 16:06:24

标签: android android-actionbar searchview

将SearchView添加到菜单(参见下面的示例)时,它的图标不会改变,并且它以非标准方式运行。例如,长按“搜索”菜单按钮应该弹出文本搜索,但它不会。

如何将其行为更改为标准?图标,现在长按。我确定还有其他问题)

添加视图的代码示例:

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);

感谢。

1 个答案:

答案 0 :(得分:6)

更新:可以从代码中获取。您必须添加MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW并将SearchView的上下文更改为getActionBar().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文档中的Add the Search View to the Action Bar