Обычный шаблон, который я вижу во многих приложениях, предоставляющих некоторые функции поиска, заключается в том, чтобы виджет поиска очищал другие значки меню от панели действий. Это работает для меня прямо сейчас, просто используя ifRoom
для showAsAction
в моих пунктах меню. Однако я хотел бы показать больше пунктов меню на панели действий, потому что кажется, что ActionBar очень консервативен в том, как он определяет ifRoom
, и, следовательно, по крайней мере один важный пункт меню выталкивается в переполнение (возможно, кто-то умнее меня знает, почему они сделай это).
Итак, как я могу установить showAsAction
как always
, в то же время удаляя элементы меню с панели действий, когда виджет поиска активирован? Когда я пытаюсь сделать это сейчас, пункты меню не перемещаются, а виджет поиска сжимается.
Вот мое меню:
<item
android:id="@+id/action_search"
android:icon="@drawable/ic_action_search"
android:title="@string/action_search"
android:showAsAction="collapseActionView|always"
android:actionViewClass="android.widget.SearchView" />
<item
android:id="@+id/action_stores"
android:title="@string/action_stores"
android:icon="@drawable/ic_action_stores"
android:showAsAction="always" />
<item
android:id="@+id/action_shopping_lists"
android:title="@string/action_shopping_lists"
android:icon="@drawable/ic_action_lists"
android:showAsAction="always" />
<item
android:id="@+id/action_preferences"
android:orderInCategory="100"
android:title="@string/action_settings"
app:showAsAction="never"/>
Мой файл searchable.xml
<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
android:label="@string/app_name"
android:hint="@string/search_hint" >
</searchable>