XML:
<?xml version="1.0" encoding="utf-8"?>
<group>
<item
android:id="@+id/share"
android:title="Share"/>
<menu>
<item android:title="Share Contact"
android:id="@+id/sharecontact" />
<item android:title="Share Profile"
android:id="@+id/shareprofile"/>
<item android:title="Share Conversation"
android:id="@+id/sharechat"/>
</menu>
</group>
<group>
<item
android:id="@+id/options"
android:title="Options"/>
<menu>
<item android:title="Mute Notifications"
android:id="@+id/mutenotifications" />
<item android:title="Pin"
android:id="@+id/pin" />
<item android:title="Archieve Chat"
android:id="@+id/archievechat" />
<item android:title="Create Shortcut"
android:id="@+id/createshortcut" />
<item android:title="Clear Chat"
android:id="@+id/clearchat" />
<item android:title="Backup Chat"
android:id="@+id/backupchat" />
</menu>
</group>
<group>
<item
android:id="@+id/more"
android:title="More"/>
<menu>
<item android:title="Ignore Contact"
android:id="@+id/ignorecontact" />
<item android:title="Report Contact"
android:id="@+id/reportcontact" />
<item android:title="Delete Contact"
android:id="@+id/deletecontact" />
<item android:title="Block Contact"
android:id="@+id/blockcontact" />
</menu>
</group>
<group>
<item
android:id="@+id/privacy"
android:title="Privacy"/>
<menu>
<item android:title="Screenshot Awareness"
android:id="@+id/screenshotawareness" />
<item android:title="Deleting Messages Awareness"
android:id="@+id/deletingmessagesawareness" />
<item android:title="LastSeen"
android:id="@+id/lastseen" />
<item android:title="Online"
android:id="@+id/online" />
<item android:title="Seen"
android:id="@+id/seen" />
<item android:title="Copy Awareness"
android:id="@+id/copy" />
</menu>
</group>
Java代码:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.profile, menu);
return true;
}
public boolean onNavigationItemSelected(MenuItem item) {
int id = item.getItemId();
Fragment fragment = null;
if (id == R.id.share) {
} else if (id == R.id.options) {
} else if (id == R.id.privacy) {
} else if (id == R.id.more) {
}
return true;
}
为什么菜单项显示两次而不是一次?我确实调查了Google的代码,但是看起来一样。
答案 0 :(得分:2)
您必须使用 <menu>
标签启动菜单,并且层次结构必须如下所示:
<?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:title="@string/trip_details">
<menu>
<group android:checkableBehavior="single">
<item
android:id="@+id/nav_dashboard"
android:icon="@drawable/dashboard1_icons"
android:title="@string/dashboard"
android:checked="true"/>
<item
android:id="@+id/nav_my_trip"
android:icon="@drawable/ic_trip_icon"
android:title="@string/my_trip" />
<item
android:id="@+id/nav_expenses"
android:icon="@drawable/ic_expense"
android:title="@string/expense" />
</group>
</menu>
</item>
<item android:title="@string/help_and_support">
<menu>
<group android:checkableBehavior="single">
<item
android:id="@+id/nav_help"
android:icon="@drawable/ic_help"
android:title="@string/helpdesk" />
<item
android:id="@+id/nav_change_language"
android:icon="@drawable/ic_language"
android:title="@string/change_language"
android:visible="true"/>
<item
android:id="@+id/nav_logout"
android:icon="@drawable/logout_icons"
android:title="@string/log_out" />
<item
android:id="@+id/nav_version_name"
android:title=""
app:actionLayout="@layout/menu_version_view" />
</group>
</menu>
</item>
</menu>
这只是我的带有组菜单的示例。
尝试一下。如果可行,请在这里更新。
答案 1 :(得分:0)
您应将所有group
和menu
标签放入主item
标签内。您的menu.xml应该是这样的:
<item
android:id="@+id/share"
android:title="Share">
<menu>
<group>
<item
android:id="@+id/sharecontact"
android:title="Share Contact" />
<item
android:id="@+id/shareprofile"
android:title="Share Profile" />
<item
android:id="@+id/sharechat"
android:title="Share Conversation" />
</group>
</menu>
...
</item>
依此类推...