代码之家  ›  专栏  ›  技术社区  ›  WSBT

导航抽屉-如何在运行时添加项目到现有的菜单组

  •  0
  • WSBT  · 技术社区  · 7 年前

    group0 ,在xml中定义:

    <group android:id="@+id/group0"
        android:checkableBehavior="single">
        <item
            android:id="@+id/nav_camera"
            android:icon="@drawable/ic_menu_camera"
            android:title="Import" />
        <item
            android:id="@+id/nav_gallery"
            android:icon="@drawable/ic_menu_gallery"
            android:title="Gallery" />
    </group>
    

    nav_view.menu.add(groupId = R.id.group0, itemId = 85621, order = 12345, title = "adding to group 0")
    

    尽管 targetGroup 组0 组0 :

    nav_view.menu.removeGroup(R.id.group0)
    

    checkableBehavior 在XML中定义。

    1 回复  |  直到 7 年前
        1
  •  0
  •   WSBT    7 年前

    在阅读了Android源代码之后,我想我对这里的问题有了一个想法。

    新的项目确实被添加到 group0 如广告所示。可通过its进行验证 groupId 财产。但它不像一个。这似乎是我遇到的两个不同的问题。

    removeGroup(int groupId) 方法,android开始迭代每个菜单项并检查其 . 但如果下一个项目不再属于目标组,它将中止该过程。这是一个可接受的优化,假设同一组中的所有项都将在导航抽屉中彼此相邻显示。这里的“错误配置”是我为 order ,使我的物品在列表中显示得更晚。

    这里的解决办法是通过 0 对于 参数,使它们显示在组中现有项的旁边。或者,替代 removeGroup

    1. 项目不共享 checkableBehavior 由XML中的组定义。

    这是因为 isCheckable 不可检查 正确设置(尽管技术上 add

    这里的解决办法是打电话 isCheckable = true 在每个新添加的项目上。