Action bar - ifRoom option leaving too much space

2019-01-27 12:59发布

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:

  1. In the first case, I set all of them with android:showAsAction="always"
  2. In the second case, I set all of them with ``android:showAsAction="ifRoom"`

Here are the results:

Case 1:

always case

Case 2:

ifRoom case

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!

3条回答
干净又极端
2楼-- · 2019-01-27 13:20

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

查看更多
Rolldiameter
3楼-- · 2019-01-27 13:25

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.

查看更多
萌系小妹纸
4楼-- · 2019-01-27 13:43

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.

查看更多
登录 后发表回答