2013-06-25 3 views
4

Я хочу создать элементы меню действий в ActionBar полностью динамически по некоторым причинам. Но когда я добавляю элементы меню из кода, они отображаются как переполнение элемента меню настройки.Динамическое добавление элемента действия в панель действий

Ниже приведен мой код. любое решение?

enter image description here

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    //getMenuInflater().inflate(R.menu.start, menu); 

    MenuItem logoutMI= menu.add(0,1,0,"Logout"); 
    logoutMI.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 
    logoutMI.setShowAsAction(MenuItem.SHOW_AS_ACTION_WITH_TEXT); 

    MenuItem configMI= menu.add(0,2,1,"Configuration"); 
    configMI.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 
    configMI.setShowAsAction(MenuItem.SHOW_AS_ACTION_WITH_TEXT); 

    return true; 
} 
+0

в какой-то момент вы собираетесь бежать из комнаты в панели действий и пункты меню должны пойти в переполнение. вы пытаетесь добавить «logout» и «configuration» где-то поверх «Cash» или «Menu»? В этом случае «Info» и «Refresh» вместо этого попадают в переполнение. – invertigo

+0

Элементы меню, отображаемые на изображениях, создаются статическим образом из файла меню XML, только для того, чтобы сделать снимок экрана для примера – lory105

ответ

5

Я думаю, что вам нужно значение или те, флаг вместе на setShowAsAction. Из документов, http://developer.android.com/reference/android/view/MenuItem.html#setShowAsAction(int)

Один из SHOW_AS_ACTION_ALWAYS, следует использовать SHOW_AS_ACTION_IF_ROOM или SHOW_AS_ACTION_NEVER и можно дополнительно или значение с SHOW_AS_ACTION_WITH_TEXT. SHOW_AS_ACTION_WITH_TEXT

Ex.

logoutMI.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT); 

Сообщите мне, если это действительно устранило вашу проблему.

1

Посмотрите на поле order ваших других пунктов меню, вы добавляете «Выход» и «Конфигурация» с порядком 0, но если все ваши другие пункты меню имеют порядок 0, они будут заказаны на основе того, когда они были добавлены в меню.

Кроме того, вы хотите вызвать setShowAsAction() только один раз, с или оператором:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    //getMenuInflater().inflate(R.menu.start, menu); 

    MenuItem logoutMI= menu.add(0,1,0,"Logout"); 
    logoutMI.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT); 

    MenuItem configMI= menu.add(0,2,0,"Configuration"); 
    configMI.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT); 

    return true; 
} 
+0

Я скорректировал поле заказа – lory105

Смежные вопросы