【问题标题】:Preserve the orderInCategory of items having showAsAction="ifRoom" set保留设置了 showAsAction="ifRoom" 的项目的 orderInCategory
【发布时间】:2015-07-11 05:02:00
【问题描述】:

当第一个选项菜单是菜单的唯一项目时,如何保留android:orderInCategory 定义的顺序?

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

第一个选项菜单显示一个操作:

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

现在,如果我在一个 Activity 中同时显示两个 Fragments,我希望这些项目将遵循 android:orderInCategory 的值并显示为一个操作和两个菜单项:

而是显示了两个操作,并且只有一个菜单项:

那么我将如何实现预期的结果?


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>

【问题讨论】:

    标签: android android-actionbar android-optionsmenu


    【解决方案1】:

    Android 尊重顺序,但 android:showAsAction 优先。因为您将 action2 指定为“never”,而将其他 2 指定为“ifRoom”,所以它首先将其他 2 显示为操作项,然后在溢出菜单中显示 action2。

    要获得您想要的行为,您应该将 action3 的 showAsAction 设置为“从不”。

    【讨论】:

      猜你喜欢
      • 2013-04-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-15
      • 2015-06-02
      • 1970-01-01
      • 2012-06-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多