アクションメニュー項目とそのオーバーフロー項目に取り組んでいます。これは私の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
とは何ですか?
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>
Android:orderInCategory
は、実際にはtwo wayで役立ちます。
1。ActionBar
のメニュー項目用。アイテムは、昇順に応じてActionBarに左から右に表示されます。
2。overflow
メニューのメニュー項目用。オーバーフローメニュー項目は、指定した昇順に応じて上から下に表示されます。
Android:orderInCategory
より高い値、より低い優先度
アクティビティとフラグメントがあり、どちらにもオプションメニューがあり、アイテム番号は1と3です。
Android:orderInCategory=0
を設定すると、アクティビティメニューはフラグメントメニューの上にあり、値を設定する前と同じ効果になります。
しかし、Android:orderInCategory=1
を設定すると、アクティビティメニューがフラグメントメニューの下にあり、それが私が望むものです(テストもAndroid:orderInCategory=5
テストしましたが、それでも同じ効果があります)。