如何使用id在组中添加菜单?
How to add the menu in the group using the id?
我正在开发我的 android 应用程序以使用 ID 在组中添加菜单。我在组中添加菜单时遇到问题,因为它会在导航抽屉底部添加菜单,而不添加使用 id 的组。
这是它显示的内容:
这是我试过的:
menu.addSubMenu(R.id.nav_group1, 1, 100, "test1")
.setIcon(R.drawable.ic_baseline_folder_24);
menu.addSubMenu(R.id.nav_group1, 2, 101, "test2")
.setIcon(R.drawable.ic_baseline_folder_24);
menu.addSubMenu(R.id.nav_group1, 3, 102, "test4")
.setIcon(R.drawable.ic_baseline_folder_24);
menu.addSubMenu(R.id.nav_group1, 4, 103, "test new folder")
.setIcon(R.drawable.ic_baseline_folder_24);
menu.addSubMenu(R.id.nav_group1, 5, 104, "test new folder backup")
.setIcon(R.drawable.ic_baseline_folder_24);
我也试过这个:
menu.add(R.id.nav_group1, 1, 100, "test1")
.setIcon(R.drawable.ic_baseline_folder_24);
menu.add(R.id.nav_group1, 2, 101, "test2")
.setIcon(R.drawable.ic_baseline_folder_24);
menu.add(R.id.nav_group1, 3, 102, "test4")
.setIcon(R.drawable.ic_baseline_folder_24);
menu.add(R.id.nav_group1, 5, 104, "test new folder")
.setIcon(R.drawable.ic_baseline_folder_24);
menu.add(R.id.nav_group1, 5, 104, "test new folder backup")
.setIcon(R.drawable.ic_baseline_folder_24);
我也试过这个:
menu.addSubMenu(R.id.second_group, 1, 100, "test1")
.setIcon(R.drawable.ic_baseline_folder_24);
menu.addSubMenu(R.id.second_group, 2, 101, "test2")
.setIcon(R.drawable.ic_baseline_folder_24);
menu.addSubMenu(R.id.second_group, 3, 102, "test4")
.setIcon(R.drawable.ic_baseline_folder_24);
.setIcon(R.drawable.ic_baseline_folder_24);
menu.addSubMenu(R.id.second_group, 5, 104, "test new folder backup")
.setIcon(R.drawable.ic_baseline_folder_24);
完整代码:
DrawerLayout drawer = findViewById(R.id.drawer_layout);
NavigationView navigationView = findViewById(R.id.nav_view);
Menu menu = navigationView.getMenu();
menu.add(R.id.nav_group1, 1, 100, "test1")
.setIcon(R.drawable.ic_baseline_folder_24);
menu.add(R.id.nav_group1, 2, 101, "test2")
.setIcon(R.drawable.ic_baseline_folder_24);
menu.add(R.id.nav_group1, 3, 102, "test4")
.setIcon(R.drawable.ic_baseline_folder_24);
menu.add(R.id.nav_group1, 5, 104, "test new folder")
.setIcon(R.drawable.ic_baseline_folder_24);
menu.add(R.id.nav_group1, 5, 104, "test new folder backup")
.setIcon(R.drawable.ic_baseline_folder_24);
activity_main_drawer.xml:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:showIn="navigation_view">
<group android:checkableBehavior="single">
<item
android:id="@+id/nav_inbox"
android:icon="@drawable/ic_baseline_inbox_24"
android:title="Inbox1" />
<item
android:id="@+id/nav_important"
android:icon="@drawable/ic_baseline_important_24"
android:title="Important" />
<item
android:id="@+id/nav_outbox"
android:icon="@drawable/ic_baseline_outbox_24"
android:title="Outbox" />
<item
android:id="@+id/nav_sent"
android:icon="@drawable/ic_baseline_sent_mail_24"
android:title="Sent" />
<item
android:id="@+id/nav_drafts"
android:icon="@drawable/ic_baseline_draft_24"
android:title="Drafts" />
<item
android:id="@+id/nav_spam"
android:icon="@drawable/ic_baseline_spam_24"
android:title="Spam" />
<item
android:id="@+id/nav_trash"
android:icon="@drawable/ic_baseline_trash_24"
android:title="Trash" />
</group>
<group android:visible="false" android:id="@+id/second_group" />
<group android:id="@+id/nav_group1">
<item
android:title="Folders" />
</group>
<group android:id="@+id/nav_group2">
<item
android:id="@+id/nav_create_new_folder"
android:icon="@drawable/ic_baseline_add_24"
android:title="Create New" />
</group>
</menu>
我想要实现的是我想在组中使用名为 nav_group1
的 id 添加菜单项。
像这样:
能否举例说明如何使用 id 将菜单添加到组中?
您需要使用 orderInCategory
。您已经将订单分配给以编程方式添加的菜单项。
问题出在您的 XML 中,当 orderIncategory
号码未分配号码时,它们的默认值为零。当您以编程方式添加菜单项时,您分配了更高的 orderInCategory
将这些菜单项定位在底部。
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:showIn="navigation_view">
<group android:checkableBehavior="single"
android:orderInCategory="10">
...
</group>
<group android:visible="false" android:id="@+id/second_group" />
<group android:id="@+id/nav_group1"
android:orderInCategory="100">
<item
android:title="Folders" />
</group>
<group android:id="@+id/nav_group2"
android:orderInCategory="200">
<item
android:id="@+id/nav_create_new_folder"
android:icon="@drawable/ic_baseline_add_24"
android:title="Create New" />
</group>
</menu>
我无权访问 android stuido,但在你的 java 中,你也可以尝试将 inOrderNumber
设置为零。
menu.addSubMenu(R.id.nav_group1, 1, 0, "test1")
.setIcon(R.drawable.ic_baseline_folder_24);
我正在开发我的 android 应用程序以使用 ID 在组中添加菜单。我在组中添加菜单时遇到问题,因为它会在导航抽屉底部添加菜单,而不添加使用 id 的组。
这是它显示的内容:
这是我试过的:
menu.addSubMenu(R.id.nav_group1, 1, 100, "test1")
.setIcon(R.drawable.ic_baseline_folder_24);
menu.addSubMenu(R.id.nav_group1, 2, 101, "test2")
.setIcon(R.drawable.ic_baseline_folder_24);
menu.addSubMenu(R.id.nav_group1, 3, 102, "test4")
.setIcon(R.drawable.ic_baseline_folder_24);
menu.addSubMenu(R.id.nav_group1, 4, 103, "test new folder")
.setIcon(R.drawable.ic_baseline_folder_24);
menu.addSubMenu(R.id.nav_group1, 5, 104, "test new folder backup")
.setIcon(R.drawable.ic_baseline_folder_24);
我也试过这个:
menu.add(R.id.nav_group1, 1, 100, "test1")
.setIcon(R.drawable.ic_baseline_folder_24);
menu.add(R.id.nav_group1, 2, 101, "test2")
.setIcon(R.drawable.ic_baseline_folder_24);
menu.add(R.id.nav_group1, 3, 102, "test4")
.setIcon(R.drawable.ic_baseline_folder_24);
menu.add(R.id.nav_group1, 5, 104, "test new folder")
.setIcon(R.drawable.ic_baseline_folder_24);
menu.add(R.id.nav_group1, 5, 104, "test new folder backup")
.setIcon(R.drawable.ic_baseline_folder_24);
我也试过这个:
menu.addSubMenu(R.id.second_group, 1, 100, "test1")
.setIcon(R.drawable.ic_baseline_folder_24);
menu.addSubMenu(R.id.second_group, 2, 101, "test2")
.setIcon(R.drawable.ic_baseline_folder_24);
menu.addSubMenu(R.id.second_group, 3, 102, "test4")
.setIcon(R.drawable.ic_baseline_folder_24);
.setIcon(R.drawable.ic_baseline_folder_24);
menu.addSubMenu(R.id.second_group, 5, 104, "test new folder backup")
.setIcon(R.drawable.ic_baseline_folder_24);
完整代码:
DrawerLayout drawer = findViewById(R.id.drawer_layout);
NavigationView navigationView = findViewById(R.id.nav_view);
Menu menu = navigationView.getMenu();
menu.add(R.id.nav_group1, 1, 100, "test1")
.setIcon(R.drawable.ic_baseline_folder_24);
menu.add(R.id.nav_group1, 2, 101, "test2")
.setIcon(R.drawable.ic_baseline_folder_24);
menu.add(R.id.nav_group1, 3, 102, "test4")
.setIcon(R.drawable.ic_baseline_folder_24);
menu.add(R.id.nav_group1, 5, 104, "test new folder")
.setIcon(R.drawable.ic_baseline_folder_24);
menu.add(R.id.nav_group1, 5, 104, "test new folder backup")
.setIcon(R.drawable.ic_baseline_folder_24);
activity_main_drawer.xml:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:showIn="navigation_view">
<group android:checkableBehavior="single">
<item
android:id="@+id/nav_inbox"
android:icon="@drawable/ic_baseline_inbox_24"
android:title="Inbox1" />
<item
android:id="@+id/nav_important"
android:icon="@drawable/ic_baseline_important_24"
android:title="Important" />
<item
android:id="@+id/nav_outbox"
android:icon="@drawable/ic_baseline_outbox_24"
android:title="Outbox" />
<item
android:id="@+id/nav_sent"
android:icon="@drawable/ic_baseline_sent_mail_24"
android:title="Sent" />
<item
android:id="@+id/nav_drafts"
android:icon="@drawable/ic_baseline_draft_24"
android:title="Drafts" />
<item
android:id="@+id/nav_spam"
android:icon="@drawable/ic_baseline_spam_24"
android:title="Spam" />
<item
android:id="@+id/nav_trash"
android:icon="@drawable/ic_baseline_trash_24"
android:title="Trash" />
</group>
<group android:visible="false" android:id="@+id/second_group" />
<group android:id="@+id/nav_group1">
<item
android:title="Folders" />
</group>
<group android:id="@+id/nav_group2">
<item
android:id="@+id/nav_create_new_folder"
android:icon="@drawable/ic_baseline_add_24"
android:title="Create New" />
</group>
</menu>
我想要实现的是我想在组中使用名为 nav_group1
的 id 添加菜单项。
像这样:
能否举例说明如何使用 id 将菜单添加到组中?
您需要使用 orderInCategory
。您已经将订单分配给以编程方式添加的菜单项。
问题出在您的 XML 中,当 orderIncategory
号码未分配号码时,它们的默认值为零。当您以编程方式添加菜单项时,您分配了更高的 orderInCategory
将这些菜单项定位在底部。
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:showIn="navigation_view">
<group android:checkableBehavior="single"
android:orderInCategory="10">
...
</group>
<group android:visible="false" android:id="@+id/second_group" />
<group android:id="@+id/nav_group1"
android:orderInCategory="100">
<item
android:title="Folders" />
</group>
<group android:id="@+id/nav_group2"
android:orderInCategory="200">
<item
android:id="@+id/nav_create_new_folder"
android:icon="@drawable/ic_baseline_add_24"
android:title="Create New" />
</group>
</menu>
我无权访问 android stuido,但在你的 java 中,你也可以尝试将 inOrderNumber
设置为零。
menu.addSubMenu(R.id.nav_group1, 1, 0, "test1")
.setIcon(R.drawable.ic_baseline_folder_24);