Подтвердить что ты не робот

Элементы меню фрагмента 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.

У кого-нибудь есть идеи?

4b9b3361

Ответ 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);