保留设置了 showAsAction="ifRoom" 的项目的 orderInCategory
Preserve the orderInCategory of items having showAsAction="ifRoom" set
当第一个选项菜单显示为一个操作时,如果它是菜单中的唯一项目,我如何保留 android:orderInCategory
定义的顺序?
我定义了两个选项菜单,由两个不同的片段插入。如果两个 Fragment 没有同时显示,一切看起来都像预期的那样。
第一个选项菜单显示一个操作:
第二个选项菜单显示一项操作和一项菜单项:
现在,如果我同时在一个 Activity 中显示两个片段,我希望这些项目将遵循 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:showAsAction 优先。因为您将 action2 指定为 "never",将另外 2 个指定为 "ifRoom",它首先将另外 2 个显示为操作项,然后在溢出菜单中显示 action2。
要获得您想要的行为,您应该为 action3 将 showAsAction 设置为 "never"。
当第一个选项菜单显示为一个操作时,如果它是菜单中的唯一项目,我如何保留 android:orderInCategory
定义的顺序?
我定义了两个选项菜单,由两个不同的片段插入。如果两个 Fragment 没有同时显示,一切看起来都像预期的那样。
第一个选项菜单显示一个操作:
第二个选项菜单显示一项操作和一项菜单项:
现在,如果我同时在一个 Activity 中显示两个片段,我希望这些项目将遵循 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:showAsAction 优先。因为您将 action2 指定为 "never",将另外 2 个指定为 "ifRoom",它首先将另外 2 个显示为操作项,然后在溢出菜单中显示 action2。
要获得您想要的行为,您应该为 action3 将 showAsAction 设置为 "never"。