Ответ 1
Обновление: Возможно из кода. Вы должны добавить 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.