Элементы меню фрагмента ActionBar. Поставить их впереди
Я добавляю элементы меню фрагмента, используя onCreateOptionsMenu успешно...
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
{
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.additional_fragment_menu, menu);
}
Это дополнительное меню выше содержит 1 пункт меню. Мне нужно сделать этот пункт меню перед всеми другими существующими элементами, чтобы он появился на панели действий. В настоящее время он выглядит последним.
(Это элемент android: showAsAction = "always" , который я добавляю)
Я попытался добавить его программно, но в объекте MenuItem нет возможности разрешить вам указывать значки и флаги showAsAction.
У кого-нибудь есть идеи?
Ответы
Ответ 1
Хорошо, я взломал это сам указателем в правильном направлении от EvilDuck. И да dymmeh вы правы, вы можете сделать это программно!
Мне нужно было использовать комбинацию orderInCategory
и menuCategory
. Android, похоже, игнорирует orderInCategory
, если у вас нет указанного menuCategory
.
- Я указал категорию каждого элемента меню в своем приложении, установив значение атрибута
menuCategory
в "system"
.
- Мои базовые пункты меню (те, которые загружаются через
Activity
), я должен был установить номера высокого порядкаInCategory, такие как 10, 11, 12, 13 и т.д.
- Когда я затем раздул и добавил дополнительное меню фрагмента xml с той же категорией и значением
orderInCategory
1, оно появилось в качестве первого элемента.
Ответ 2
Попробуйте использовать атрибут "android: orderInCategory" в пунктах меню
Ответ 3
Я не уверен, что вы получаете то, что вы не можете установить параметр showAsAction или значок программным путем
например:
public void onCreateOptionsMenu(Menu menu)
{
menu.add(Menu.NONE, /** group ID.. not really needed unless you're working with groups **/
0, /** this is the items ID (get this in onOptionsItemSelected to determine what was clicked) **/
Menu.NONE, /** ORDER.. this is what you want to change **/
"Cancel") /** title **/
.setIcon(R.drawable.ic_menu_cancel)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
}
Docs:
menu.add(int groupId, int itemId, int order, CharSequence title)
setShowAsAction (int actionEnum)
setIcon (int resId)
Ответ 4
Все правильно, просто используйте ниже одного кода строки в onCreateView.
setHasOptionsMenu(true);