问题
I want to create my action menu items in the ActionBar totally dinamically for some reasons. But when I add the menu items from code, they are displayed as overflow of the setting menu item.
Below there is my code. any solution?
@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;
}
回答1:
I think you need to OR those flag values together on setShowAsAction
.
From the docs, http://developer.android.com/reference/android/view/MenuItem.html#setShowAsAction(int)
One of SHOW_AS_ACTION_ALWAYS, SHOW_AS_ACTION_IF_ROOM, or SHOW_AS_ACTION_NEVER should be used, and you may optionally OR the value with SHOW_AS_ACTION_WITH_TEXT. SHOW_AS_ACTION_WITH_TEXT
Ex.
logoutMI.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
Let me know if this actually fixed your problem.
回答2:
Take a look at the order
field of your other menu items, you are adding "Logout" and "Configuration" with an order of 0, but if all your other menu items have an order of 0, they will be ordered based on when they were added to the menu.
Also, you will want to call setShowAsAction() only once, with an or operator:
@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;
}
来源:https://stackoverflow.com/questions/17301113/dynamically-add-action-item-in-action-bar