Android 以编程方式导航视图设置菜单
Android Navigation View set menu programmatically
在我的应用程序中,我想根据某些条件传递某些菜单。
这是布局:
<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"
/>
我只想根据某些条件动态更改@menu/activity_main_drawer_1。
如何以编程方式执行此操作?
在你的 NavigationView
上使用 inflateMenu
。
例如:
navigationView.getMenu().clear();
navigationView.inflateMenu(R.menu.menu_view);
有关详细信息,请参阅 here。
Create Generic class Implements Menu iterface then add menu item
NavigationView nd=(NavigationView )findViewById(R.id.nav_view_free);
Menu mn=new Menu();
mn.add("email");
mn.add("email");
mn.add("email");
mn.add("email");
nd(mn);
navigationView.getMenu().clear();
navigationView.inflateMenu(R.menu.your_menu);
这应该有效:
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()
希望对您有所帮助。
在我的应用程序中,我想根据某些条件传递某些菜单。
这是布局:
<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"
/>
我只想根据某些条件动态更改@menu/activity_main_drawer_1。
如何以编程方式执行此操作?
在你的 NavigationView
上使用 inflateMenu
。
例如:
navigationView.getMenu().clear();
navigationView.inflateMenu(R.menu.menu_view);
有关详细信息,请参阅 here。
Create Generic class Implements Menu iterface then add menu item NavigationView nd=(NavigationView )findViewById(R.id.nav_view_free); Menu mn=new Menu(); mn.add("email"); mn.add("email"); mn.add("email"); mn.add("email"); nd(mn);
navigationView.getMenu().clear();
navigationView.inflateMenu(R.menu.your_menu);
这应该有效:
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()
希望对您有所帮助。