ActionBar 菜单项中的 orderInCategory 是什么?为什么它用于……?

What is orderInCategory in ActionBar menu item & why it is use for..?

我正在处理操作菜单项及其溢出项,这是我的 main_menu.xml

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

<item
    android:id="@+id/menu_search"
    android:icon="@drawable/search"
    android:title="@string/start_new_project"
    app:showAsAction="always" />
<item
    android:id="@+id/menu_dts_overflow"
    android:icon="@drawable/ic_action_overflow_round"
    android:orderInCategory="11111" 
    android:title="Service"
    app:showAsAction="always">
    <menu>
        <item
            android:id="@+id/menu_newProject"
            android:icon="@drawable/newproject"
            android:title="@string/start_new_project"
            app:showAsAction="never" />


        <item
            android:id="@+id/menu_help"
            android:icon="@drawable/help"
            android:title="Service Tasks"
            app:showAsAction="never" />


        <item
            android:id="@+id/menu_signOut"
            android:icon="@drawable/signout"
            android:title="@string/menusignout"
            app:showAsAction="never" />

    </menu>
</item>

我试图构建一个搜索项和一个溢出项,您可以在上面的代码中看到它们。我是 Action bar 菜单项的新手,所以我尝试 Google 它并且能够按我的需要让它工作。

在此我还要知道一件事。

1. 什么是 orderInCategory 和一些数字以及它的用途..?

android:orderInCategory 是一个整数属性,它规定菜单项在显示时在菜单中的显示顺序。

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

    <item
        android:id="@+id/menu_item_first"
        android:orderInCategory="1"
        android:showAsAction="never"
        android:title="@string/string_one"/>

    <item
        android:id="@+id/menu_item_second"
        android:orderInCategory="2"
        android:showAsAction="never"
        android:title="@string/string_two"/>

</menu>
  • Menu items in ToolBar are arranged from left to right (or start to end in RTL mode) in the ascending order (i.e. 1,2,3 -> left to right).

  • Menu Items in Overflow menu are arranged from top to bottom in the ascending order (i.e. 1,2,3 -> top to bottom).

android:orderInCategory 实际上在 两个方面很有用

1. 对于 ActionBar 中的菜单项。 项目将根据升序从左到右出现在 ActionBar 中。

2. 对于 overflow 菜单中的菜单项。 溢出菜单项将根据您指定的升序从上到下显示。

android:orderInCategory 较高的值,较低的优先级。

我里面有一个Activity和一个Fragment,它们都有选项菜单,项目编号是1和3。

如果我设置android:orderInCategory=0,activity菜单在fragment菜单上面,效果和我设置之前一样

但是如果我设置android:orderInCategory=1,activity菜单在fragment菜单下面,这就是我想要的。(我也测试android:orderInCategory=5测试过,还是一样效果。)