#java #android #search #android-actionbar
#java #Android #Поиск #android-панель действий
Вопрос:
Я новичок в разработке Android. Я следую началу руководства по разработке из developer.android.com . К сожалению, я застрял, пытаясь добавить элемент действия поиска на панель действий. Это мой XML и onCreateOptionsMenu, который соответствует:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.example.test.MainActivity" >
<item android:id="@ id/action_search"
android:icon="@drawable/ic_action_search"
android:title="@string/action_search"
app:showAsAction="always"/>
<item
android:id="@ id/action_settings"
android:orderInCategory="100"
android:title="@string/action_settings"
app:showAsAction="never"/>
</menu>
.
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
}
Мои доступные для рисования каталоги содержат файл ic_action_search.png для всех плотностей экрана. Кроме того, мой минимальный SDK равен 8, а целевой — 19. Я также импортировал v7.app.ActionBarActivity.
Отображается меню настроек и переполнения, но поиск по-прежнему отсутствует. Что я делаю не так?
Ответ №1:
Это может быть связано с тем, что вы используете библиотеку совместимости, и в этом случае вам нужно добавить дополнительные атрибуты в XML-файл меню. Это мой элемент для опции поиска…
<item android:id="@ id/options_menu_search"
android:title="@string/search"
android:icon="@android:drawable/ic_menu_search"
com.mycompany.myapp:showAsAction="ifRoom|collapseActionView"
com.mycompany.myapp:actionViewClass="android.support.v7.widget.SearchView" >
</item>
Обратите внимание на две строки, которые начинаются с com.mycompany.myapp
— они необходимы при использовании параметров меню совместимости. Измените этот префикс, чтобы он соответствовал имени пакета вашего приложения.
Комментарии:
1. Это было оно. Большое вам спасибо.
2. @AlanW: Вы обнаружите, что вам действительно нужны эти дополнительные строки с префиксом пакета для устройств, работающих под управлением API 11. В данный момент я не могу найти ссылку на документацию, но когда найду, я опубликую ее. Есть несколько мест, где вам приходится выполнять аналогичные действия при использовании библиотек совместимости.