web-dev-qa-db-ja.com

ActionBarメニュー項目のorderInCategoryとは何ですか?なぜ使用されるのですか?

アクションメニュー項目とそのオーバーフロー項目に取り組んでいます。これは私の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>

上記のコードで確認できる検索項目とオーバーフロー項目を作成しようとしました。私はアクションバーのメニュー項目が初めてなので、Googleで試してみて、必要に応じて機能させることができました。

これで私はもう一つ知っておく必要があります。

1。いくつかの数字を持つorderInCategoryとは何ですか?

48
SaravanaRaja

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>
  • ToolBarのメニュー項目は、leftからright(またはRTLモードではstartからend)から昇順(すなわち、 1,2,3 ->左から右)。

    horizontal menu items

  • Overflow menuのメニュー項目は、topからbottomに昇順(つまり、1,2,3 ->上から下)に配置されます。

    vertical overflow menu

103
Y.S

Android:orderInCategoryは、実際にはtwo wayで役立ちます。

1。ActionBarのメニュー項目用。アイテムは、昇順に応じてActionBarに左から右に表示されます。

2。overflowメニューのメニュー項目用。オーバーフローメニュー項目は、指定した昇順に応じて上から下に表示されます。

33
Apurva

Android:orderInCategoryより高い値、より低い優先度

アクティビティとフラグメントがあり、どちらにもオプションメニューがあり、アイテム番号は1と3です。

Android:orderInCategory=0を設定すると、アクティビティメニューはフラグメントメニューの上にあり、値を設定する前と同じ効果になります。

しかし、Android:orderInCategory=1を設定すると、アクティビティメニューがフラグメントメニューの下にあり、それが私が望むものです(テストもAndroid:orderInCategory=5テストしましたが、それでも同じ効果があります)。

6
W.Man