如何在代码中更改 NavigationView 菜单中 MenuItems 的顺序?
How to change the order of MenuItems in menu of NavigationView in code?
我在 NavigationView 中有一个菜单,它有 7 个菜单项,其中一些菜单项应该根据用户设置不可见,其余可见项应该以不同的顺序显示。这些项目已在 XML 菜单布局中定义。
我在谷歌上搜索了很多,但与已定义的菜单项无关。大多数解决方案都建议在代码中创建菜单项并在创建时设置顺序。
这是我的菜单项 XML 布局:
<group android:checkableBehavior="single">
<item
android:id="@+id/Home_menuitem"
android:title="Home" />
<item
android:id="@+id/Register_menuitem"
android:title="Register" />
<item
android:id="@+id/Login_menuitem"
android:title="Login" />
<item
android:id="@+id/language_menuitem"
android:title="Language" />
<item
android:id="@+id/ContactUs_menuitem"
android:title="Contact Us" />
<item
android:id="@+id/Likes_menuitem"
android:title="Likes" />
<item
android:id="@+id/Subscription_menuitem"
android:title="Subscription" />
<item
android:id="@+id/Logout_menuitem"
android:title="Logout" />
</group>
说我想更改代码中的顺序(不是 XML 中的顺序)以使 "Likes_menuitem" 显示在 "Home_menuitem"
上方
我没有尝试过,但您可能可以按照这些步骤操作。
首先获取对菜单的引用
navigationView.getMenu()
以不同的顺序向(从)它添加或删除特定项目以实现您的顺序。
add(int groupId, int itemId, int order, CharSequence title)
removeItem(int id)
更多信息在 docs!
您可以通过将可见菜单项设置为 true 或 false 来执行此操作。
如果您以编程方式添加项目,只需更改添加项目的顺序。即使改变菜单展开的位置也会影响结果顺序
menu.add(Menu.NONE, 898, Menu.NONE, "Item title") // <- Will be 1st
inflater.inflate(R.menu.menu_progress_avatar, menu) // <- Will be 2nd
我在 NavigationView 中有一个菜单,它有 7 个菜单项,其中一些菜单项应该根据用户设置不可见,其余可见项应该以不同的顺序显示。这些项目已在 XML 菜单布局中定义。
我在谷歌上搜索了很多,但与已定义的菜单项无关。大多数解决方案都建议在代码中创建菜单项并在创建时设置顺序。
这是我的菜单项 XML 布局:
<group android:checkableBehavior="single">
<item
android:id="@+id/Home_menuitem"
android:title="Home" />
<item
android:id="@+id/Register_menuitem"
android:title="Register" />
<item
android:id="@+id/Login_menuitem"
android:title="Login" />
<item
android:id="@+id/language_menuitem"
android:title="Language" />
<item
android:id="@+id/ContactUs_menuitem"
android:title="Contact Us" />
<item
android:id="@+id/Likes_menuitem"
android:title="Likes" />
<item
android:id="@+id/Subscription_menuitem"
android:title="Subscription" />
<item
android:id="@+id/Logout_menuitem"
android:title="Logout" />
</group>
说我想更改代码中的顺序(不是 XML 中的顺序)以使 "Likes_menuitem" 显示在 "Home_menuitem"
上方我没有尝试过,但您可能可以按照这些步骤操作。
首先获取对菜单的引用
navigationView.getMenu()
以不同的顺序向(从)它添加或删除特定项目以实现您的顺序。
add(int groupId, int itemId, int order, CharSequence title)
removeItem(int id)
更多信息在 docs!
您可以通过将可见菜单项设置为 true 或 false 来执行此操作。
如果您以编程方式添加项目,只需更改添加项目的顺序。即使改变菜单展开的位置也会影响结果顺序
menu.add(Menu.NONE, 898, Menu.NONE, "Item title") // <- Will be 1st
inflater.inflate(R.menu.menu_progress_avatar, menu) // <- Will be 2nd