Android - 如何使用ActionBarCompat显示子菜单

时间:2012-05-11 14:05:47

标签: android android-layout

我实现了ActionBarCompat以在不同的OS版本中拥有ActionBar 它隐藏在智能手机上,仅在平板电脑上显示。

我在此屏幕截图中看到: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需要一些额外的配置?

1 个答案:

答案 0 :(得分: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);
}