2012-02-14 87 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