Android Navigation View以编程方式设置菜单

use*_*901 12 navigation android menu view

在我的应用程序中,我想根据某些条件传递某些菜单.

这是布局:

 <android.support.design.widget.NavigationView
        android:id="@+id/nav_view_free"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        android:background="@color/Color_White"
        app:headerLayout="@layout/nav_header_main"
        app:menu="@menu/activity_main_drawer_1"
        />
Run Code Online (Sandbox Code Playgroud)

我想要做的就是根据某些条件动态更改@ menu/activity_main_drawer_1.

我该如何以编程方式执行此操作?

小智 21

navigationView.getMenu().clear(); navigationView.inflateMenu(R.menu.your_menu);


vgu*_*zzi 14

使用inflateMenu你的NavigationView.

有关更多信息,请参见此处

  • 否则它会保留以前的项目并附加新菜单 (2认同)

Dar*_*ini 5

这应该有效:

val menu = navigationView.menu
val submenu = menu.addSubMenu("New set")

submenu.add("Item1")
submenu.getItem(0).setIcon(R.drawable.item1)
submenu.add("Item2")
submenu.getItem(1).setIcon(R.drawable.item2)
submenu.add("Item3")
submenu.getItem(2).setIcon(R.drawable.item3)
navigationView.invalidate()
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你。