保留具有showAsAction =" ifRoom"的项目的orderInCategory。组

时间:2015-07-10 16:17:41

标签: android android-actionbar android-optionsmenu

当第一个选项菜单显示为菜单中唯一的项目时,我如何保留android:orderInCategory定义的订单?

我定义了两个选项菜单,它们由两个不同的片段插入。如果两个片段不同时显示,则一切看起来都是预期的。

第一个选项菜单显示一个动作:
Menu of Fragment1

第二个选项菜单显示一个操作和一个菜单项:
Menu of Fragment2

现在,如果我同时在一个Activity中同时显示两个片段,我希望这些项目能够服从android:orderInCategory的值,并显示为一个动作和两个菜单项:

  

How it should look like

相反,显示了两个操作,只有一个菜单项:
How it looks like

那么我将如何实现结果?

Fragment1插入:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@+id/action3"
        android:icon="@android:drawable/ic_menu_delete"
        android:orderInCategory="500"
        android:showAsAction="ifRoom"
        android:title="Action3"/>
</menu>

Fragment2插入:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@+id/action1"
        android:icon="@android:drawable/ic_menu_edit"
        android:orderInCategory="100"
        android:showAsAction="ifRoom|withText"
        android:title="Action1"/>
    <item
        android:id="@+id/action2"
        android:orderInCategory="300"
        android:showAsAction="never"
        android:title="Action2"/>
</menu>

1 个答案:

答案 0 :(得分:0)

Android尊重订单,但android:showAsAction优先。因为您将action2指定为&#34; never&#34;,将另外2指定为&#34; ifRoom&#34;,它将另外2个首先显示为操作项,然后在溢出菜单中显示action2。

要获得您想要的行为,您应该将showAsAction设置为&#34; never&#34; for action3。