2012-02-14 88 views
6

如果我定义了以下项目为我的行动吧:定义操作栏溢出项目

res/menu/action_menu.xml

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:title="label"/> 
    <item android:title="label1"/> 
    <item android:title="label2"/> 
    <item android:title="label3"/> 
    <item android:title="label4"/> 

</menu> 

在我的活动:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.action_menu, menu); 
    return true; 
} 

反正是有让我定义某些项目移动到行动溢出部分?以及如何做到这一点?

P.S. Action overflow part是隐藏某些项目(如弹出式菜单)的操作栏的最右侧部分。

+3

你声明的所有项目都会溢出,你需要用setAsAction声明才能显示为动作 – 2012-02-14 11:27:12

回答

10

这是相反的。您需要明确告诉菜单ActionBar哪些是你想要的,哪些不是通过设置适当的标志

E.g.

<item android:id="@+id/refresh" 
     android:title="@string/refresh" 
     android:icon="@drawable/reload_button" 
     android:showAsAction="always"/> 

这里android:showAsAction讲述如何处理它。选项有

  • 总是
  • ifRoom
  • 从未
  • withText

可以或管道符号为 “总是| withText” 选项一起

请在Android docs for action bar获取更多文档。

+1

很好的答案。它真的帮助我理解Action Bar的意图!我确实有一个问题。我希望某些事情只能在Action Overflow部分进行,也就是说,它位于Android右上角的3点Spinner图像下。我如何强迫它做到这一点? – Andy 2012-07-23 04:46:34

+4

只是为了澄清,因为很难找到这个拼写出来的任何地方,如果你设置showAsAction为“从不”,它将被移到溢出菜单。 (这些文档在很多地方讨论了将不常用的操作降级到溢出问题,但没有提供任何有关如何实现这一情况的线索......即使您怀疑showAsAction,官方文档也会说“绝对不要:不要放置这个项目在操作栏中“ - 他们没有说清楚它在哪里,而是在任何地方。还要注意,在某些设备上,”溢出“可能在物理菜单按钮而不是操作栏下结束。) – Brandyn 2013-08-16 00:46:13

8

要在Heiko的关于操作栏上的“溢出菜单”的回答中添加一些内容,只有当您将项目设置为ifRoom并且没有空间显示它们时才会发生这种情况。在溢出菜单上,他们只显示一个标题和没有图标。

在Android 4.0上,溢出菜单(“3 dot spinner”)仅显示在没有物理“菜单”按钮的设备上。您可以在ADV上设置选项Hardware Back/Home keys option为“否”进行测试。

+3

”到Heiko回答关于操作栏上的“溢出菜单”时,只有当您将项目设置为ifRoom并且没有空间显示时才会发生这种情况。“ - 或者如果您设置为“永不”,无论是否有空间。 – Brandyn 2013-08-16 00:48:59