2012-01-27 79 views
4

我有一個我寫的針對Android 2.1的應用程序,它使用菜單按鈕來公開一些選項。我想通過ICS中的操作欄溢出按鈕提供此菜單,但我無法使其顯示出來。在Android ICS操作欄中顯示菜單項

如果我將我的目標API更改爲15,ICS中的底部欄中的傳統菜單按鈕消失,但操作欄右上方的圖標不會替代它,因此無法訪問菜單。我試着將showAsAction屬性添加到菜單項中,它什麼也沒做。在我的Eclipse構建選項中,我的確定位於4.0.3。

我想要的就是在使用ICS Holo主題時可以在某處訪問該菜單,但仍舊向後兼容舊設備。我該如何解決這個問題?

回答

6

通常只需通過實現onCreateOptionsMenu(Menu menu)並在菜單的XML文件中添加android:showAsAction="ifRoom"以獲取所需項目,即可添加這些操作項目。

例如

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/menu_save" 
      android:icon="@drawable/ic_menu_save" 
      android:title="@string/menu_save" 
      android:showAsAction="ifRoom|withText" /> 
</menu> 

您是否認爲這個事實?

編輯: 這是一個簡單implemantation其前一陣子爲我工作:

@Override 
public boolean onCreateOptionsMenu(Menu menu){ 
    super.onCreateOptionsMenu(menu); 
    createMenu(menu); 
    return true; 
} 

private void createMenu(Menu menu){ 
    MenuItem mnu1 = menu.add(0, 0, 0, "Logout"); 
    { 
     mnu1.setAlphabeticShortcut('a'); 
     mnu1.setIcon(R.drawable.icon); 
     mnu1.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); 
    } 
} 
+0

是的,我在所有菜單項上都實現了onCreateOptionsMenu和showAsAction =「isRoom」,但除了應用程序的名稱和圖標外,操作欄中沒有任何內容。 – olane 2012-01-27 15:33:14

+0

@IneffablePigeon:這是一個示例項目:https://github.com/commonsguy/cw-android/tree/master/Menus/ActionBarBC – CommonsWare 2012-01-27 15:34:34

+0

嘗試「ifRoom」而不是「isRoom」。 – James 2012-01-27 21:21:25

0

我是有這個問題,5分鐘前。不知道這是否仍然有幫助,但這是我如何解決它:

添加super.setBooleanProperty(「showTitle」,true);到你的onCreate方法

@Override 
public void onCreate(Bundle savedInstanceState) { 
super.setBooleanProperty("showTitle", true); 
super.onCreate(savedInstanceState); 
//more code... 

這將強制顯示操作欄和菜單按鈕更換將在那裏。 我的目標是在eclipse中的android 4。老設備只顯示標題欄,當然也在聽默認的菜單按鈕動作。

相關問題