2012-05-11 23 views
1

我實現了ActionBarCompat以在不同的操作系統版本中使用ActionBar。
它隱藏在智能手機上,只在平板電腦上顯示。Android - 如何使用ActionBarCompat顯示子菜單

我看到,在這個截圖:http://developer.android.com/resources/samples/ActionBarCompat/index.html,在分享選項菜單顯示在子菜單中註銷選項,但是當我編譯和運行在平板電腦上的示例代碼中,註銷選項被完全隱藏而且沒有顯示它的子菜單

任何選項,然後我試圖做這樣的事情:

<item   
    android:icon="@android:drawable/ic_menu_delete" 
    android:orderInCategory="1" 
    android:showAsAction="always" 
    android:title="@string/menu_logout"> 
    <menu> 
     <item 
      android:id="@+id/menu_logout"         
      android:title="@string/menu_logout"/> 
    </menu> 
</item> 

它看起來真的我多麼希望 - 在平板電腦上然而,在智能手機上,它有一個不希望的效果 - 當點擊註銷選項菜單時,它會顯示另一個上下文菜單,這是因爲我相信嵌套菜單。

你知道嗎,如何在平板電腦上使用操作欄時顯示子菜單,並在智能手機上顯示普通選項菜單?也許ActionBarCompat需要一些額外的配置?

+0

我不回答你的問題,但我認爲你應該嘗試http://actionbarsherlock.com/。它比ActionBarCombat好得多,它並不好笑。 –

回答

1

我找到了解決方案。 該解決方案包含2個獨立的菜單資源文件,用於平板電腦和智能手機:menu_tablet.xml,menu_smartphone。

在平板電腦上,我顯示的子菜單:

<item   
    android:icon="@android:drawable/ic_menu_delete" 
    android:orderInCategory="1" 
    android:showAsAction="always" 
    android:title="@string/menu_logout"> 
    <menu> 
     <item 
      android:id="@+id/menu_logout"         
      android:title="@string/menu_logout"/> 
    </menu> 
</item> 

對於智能手機我顯示爲一個普通的選項菜單:

<item   
     android:icon="@android:drawable/ic_menu_delete" 
     android:orderInCategory="1" 
     android:showAsAction="always" 
     android:id="@+id/menu_logout"         
     android:title="@string/menu_logout" /> 

然後在我的代碼膨脹這樣相應的菜單資源:

if(isTablet()){ 
    menuInflater.inflate(R.menu.menu_tablet, menu); 
}else{ 
    menuInflater.inflate(R.menu.menu_smartphone, menu); 
}