将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);
感谢。
答案 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。