Должно быть достаточно просто, но может и не быть.
При использовании панели действий в Android 3.0+ у вас есть возможность определить элементы меню в XML или в коде. Я предпочитаю кодировать их в xml, так как панели действий больше основаны на пользовательском интерфейсе, чем на функциональности.
В обычный день вы использовали бы это, чтобы раздуть XML в меню
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Menu is defined inside 'res/menu/...xml
getMenuInflater().inflate(R.menu.activity_home, menu);
return true;
}
И ваш файл XML будет выглядеть так
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/menu_settings"
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/menu_settings"/>
<item
android:id="@+id/menu_item_menu"
android:icon="@drawable/menu_off_128"
android:showAsAction="ifRoom|withText"
android:title="@string/inbox_string"/>
<item
android:id="@+id/menu_item_gallery"
android:icon="@drawable/gallery_off_128"
android:showAsAction="ifRoom|withText"
android:title="@string/gallery_string"/>
<item
android:id="@+id/menu_item_inbox"
android:icon="@drawable/inbox_off_128"
android:showAsAction="ifRoom|withText"
android:title="@string/inbox_string"/>
<item
android:id="@+id/menu_item_contact"
android:icon="@drawable/phone_off_128"
android:showAsAction="ifRoom|withText"
android:title="@string/contact_string"/>
</menu>
Прямо сейчас я столкнулся с проблемой обратной совместимости панели действий, и actionbarsherlock кажется наиболее приятным в использовании и популярным. Итак, я попробовал вышеописанное с actionbarsherlock и, к сожалению, возникли проблемы со временем компиляции.
А именно, что класс Menu, возвращаемый инфлятором, взят из Android.view.menu, а не из com.actionbarsherlock.menu. Я копался в примерах на github, но все они имеют меню, определенное в коде.
Итак, кому-нибудь удалось заставить меню actionbarsherlock работать с макетом на основе XML-файла?