操作栏 - 如果有空间选项留下太多空间

19

我在操作栏上遇到了问题,我试图设置一个搜索视图,以便获得一个可扩展的搜索栏。

这个功能运行良好,除了要使用选项ifRoom来设置所有其他菜单项,以便在点击搜索图标时让搜索字段占据全部空间。

这部分也很好地工作,除了太多的菜单项被推入菜单溢出中,只剩下2个图标留在垂直屏幕上(包括搜索栏)。

我在另一个具有5个菜单项的活动中进行了另一次测试:

  1. 在第一种情况下,我将它们全部设置为android:showAsAction="always"
  2. 在第二种情况下,我将它们全部设置为android:showAsAction="ifRoom"

以下是结果:

情况1:

始终显示

情况2:

如果有空间则显示

为什么我使用ifRoom,只显示2个图标,而实际上5个菜单项可以很容易地填满全部空间呢?

因此,在我的搜索视图项目旁边只有一个菜单项可用...

谢谢!


为什么我使用ifRoom时,只显示了2个图标?? ----> https://dev59.com/CWXWa4cB1Zd3GeqPOZYY#15832302 - Dhaval Parmar
我查看了您提供的链接,但它并没有回答我的问题。我知道这与屏幕尺寸有关,但是在这里,例如,我有足够的空间容纳超过2个图标。 - Yoann Hercouet
在XML文件中,您可以通过为<item>元素声明android:showAsAction="ifRoom"来请求菜单项显示为操作项。这样,只有在有足够的空间时,菜单项才会出现在操作栏中以便快速访问。如果没有足够的空间,该项将出现在溢出菜单中。希望您能理解。有关更多详细信息,请查看:http://developer.android.com/guide/topics/ui/actionbar.html - Dhaval Parmar
是的,我有那个,其他选项出现在溢出菜单中,但我更喜欢它们保留在动作栏上。菜单溢出不是直接可达的。 - Yoann Hercouet
1
@DhawalSodhaParmar 我认为他的问题(也是我的问题)不在于“ifRoom”设置,而在于似乎有足够的空间放置图标,但Android将它们放入溢出菜单中(可能是因为Android认为没有足够的空间)。 - micheal65536
3个回答

14

看起来这是一个设计决策:

Jake Wharton 说:

当包含在操作栏中时,操作项的最大数量是有限的,基于设备的密度无关宽度。操作项也不能覆盖操作栏宽度的一半以上。

来源:这里


2
谢谢,我不知道这个限制存在。我发现在这里详细列出了一些示例和显示的图标数量:http://developer.android.com/design/patterns/actionbar.html - Yoann Hercouet

0
在XML文件中,您可以通过为元素声明android:showAsAction="ifRoom"来请求将MenuItem显示为操作项。这样,只有在有足够的空间时,MenuItem才会出现在ActionBar中以便快速访问。如果没有足够的空间,该项将出现在溢出菜单中。
因此,您的答案是:
使用“ifRoom”请求将项目显示在操作栏中,但当屏幕较小且空间有限时,允许系统将其移动到溢出菜单中。
您可以使用android:showAsAction="always"来在ActionBar中显示所有菜单。

谢谢,但如上所述,我更希望图标显示在可见的操作栏中,而不是溢出菜单中(如果有足够的空间)。 - Yoann Hercouet
我在这里解释,因为你理解为什么我们不能使用ifroom在操作栏中显示所有图标。简而言之,你不能使用“ifroom”来做到这一点。 - Dhaval Parmar

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接