I have a problem on my Action bar, I tried to setup a search view on it in order to get a a search bar expandable.
This is woking well except the fact that I had to set all the other menu items with the option ifRoom
in order to let the search field take all the room when the search icon is clicked.
This part also worked well except the fact that too many menu items got pushed into the menu overflow, only 2 icons remained on the vertical screen (including the search bar).
I did another test on another activity having 5 menu items:
- In the first case, I set all of them with
android:showAsAction="always"
- In the second case, I set all of them with ``android:showAsAction="ifRoom"`
Here are the results:
Case 1:
Case 2:
Why if I use ifRoom
, only 2 icons are displayed while actually 5 could easily fill the place?
Because of this, I have only one menu item available beside my search view item...
Thanks!
Looks like its a design decision:
Jake Wharton Says:
When contained within the action bar there is a finite maximum of
action items based on the device's density-independent width. The
action items can also not cover more than half the width of the action
bar.
From here.
In the XML file, you can request a MenuItem
to appear as an action item by declaring android:showAsAction="ifRoom"
for the <item>
element. This way, the MenuItem
appears in the ActionBar
for quick access only if there is room available. If there's not enough room, the item appears in the overflow menu.
so you answer is:
use "ifRoom" to request that an item appear in the action bar, but
allow the system to move it into the overflow menu when there's not
enough room.(when space is limited on smaller screens).
You can use android:showAsAction="always"
to show all menu in ActionBar
.
The maximum of icons for "ifRoom" option is 5 (five) even when I moved to my 100 inch screen size tablet :-) and desperately rotate it on landscape
see the link from Jake Wharton's answer (Thank you !) http://developer.android.com/design/patterns/actionbar.html