如何在代码中更改NavigationView菜单中MenuItems的顺序?

时间:2016-09-15 17:29:20

标签: android xml menu menuitem navigationview

我在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>

说我想改变Code中的顺序(不是用XML)来制作&#34; Likes_menuitem&#34;显示在上面&#34; Home_menuitem&#34;

3 个答案:

答案 0 :(得分:1)

我没有尝试过,但您可能会按照这些步骤进行操作。

  1. 首先获得对菜单的引用

    navigationView.getMenu()

  2. 使用不同的顺序添加或删除特定项目(来自),以实现订单

    add(int groupId, int itemId, int order, CharSequence title)

    removeItem(int id)

  3. docs中的更多信息!

答案 1 :(得分:0)

您可以通过可见的menuitem将其设置为true或false。

答案 2 :(得分:0)

如果您以编程方式添加项目,只需更改添加项目的顺序。即使更改菜单膨胀的位置,也会影响结果顺序。

menu.add(Menu.NONE, 898, Menu.NONE, "Item title") // <- Will be 1st
inflater.inflate(R.menu.menu_progress_avatar, menu) // <- Will be 2nd