1

我实现了 ActionBarCompat 以拥有跨不同操作系统版本的 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 需要一些额外的配置?

4

1 回答 1

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);
}
于 2012-05-14T11:52:28.167 回答