在Android中旋转后显示的所有MenuItem比需要的更多

时间:2014-04-24 09:45:40

标签: android android-actionbar menuitem

我有一个应用程序(适用于4.0及更高版本),MenuItem中有一对ActionBar s(一个带有'always',其余带有'ifRoom'或'never'属性)。

所以问题就是这样...... 如果我以横向模式启动应用,则ActionBar如下所示: launched in landscape mode

当我从肖像旋转到横向时,ActionBar看起来像这样: landscape from portrait

正如您所看到的,出现的图标数量应该超出应有的数量,即标题栏和标签菜单(导航菜单)没有剩余空间。实际上,4个项目以纵向模式显示(它是一个拆分的ActionBar),似乎Android没有意识到那里没有SplitActionBar。

请建议我可以做些什么来解决这个问题? :)


修改

我的menu.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/action_share"
        android:icon="@drawable/ic_menu_share"
        android:showAsAction="always"
        android:title="@string/share"/>
    <item
        android:id="@+id/action_viewToggle"
        android:icon="@drawable/ic_menu_view_as_grid"
        android:showAsAction="ifRoom"
        android:title="@string/switch_view"/>
    <item
        android:id="@+id/action_upload"
        android:icon="@drawable/ic_menu_upload"
        android:showAsAction="ifRoom"
        android:title="@string/upload"/>
    <item
        android:id="@+id/action_newFolder"
        android:icon="@drawable/ic_menu_new_folder"
        android:showAsAction="ifRoom"
        android:title="@string/create_folder"/>
    <item
        android:id="@+id/action_multiselect"
        android:icon="@drawable/ic_menu_select_all"
        android:showAsAction="ifRoom"
        android:title="@string/selection_mode"/>
    <item
        android:id="@+id/action_refresh"
        android:icon="@drawable/ic_menu_refresh"
        android:showAsAction="ifRoom"
        android:title="@string/refresh"/>
    <item
        android:id="@+id/action_settings"
        android:icon="@drawable/ic_menu_settings"
        android:showAsAction="never"
        android:title="@string/action_settings"/>

</menu>

2 个答案:

答案 0 :(得分:0)

确保在menu.xml文件中处理每个菜单项可见性,请查看xml ShowAsAction属性。

这是一个例子:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

<item
    android:id="@+id/SOME_MENU_ITEM"
    android:icon="@drawable/SOME_ICON"
    android:showAsAction="ifRoom" | "never" | "withText" | "always" | "collapseActionView"
    android:title="SOME_TITLE"/>
.
.

答案 1 :(得分:0)

菜单项的重要属性xml之一是, android:showAsAction,用于定义操作项的可见性。 从您的代码中可以明显看出,如果操作栏中有空间,它会显示它。 因此,如果您不希望它出现,请指定android:showAsAction值为never,以便无论方向如何,它都只会出现在溢出菜单中。