将项目动态添加到导航抽屉菜单
Dynamicly add items to NavigationDrawer menu
我有一个基本问题,令我惊讶的是我没有找到已经解决该问题的主题:我无法将元素添加到抽屉式导航菜单。
我保留了菜单参考:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main_pager, menu);
mMenu = menu;
return true;
}
并且在 AsyncTask 的回调中,我尝试以这种方式将项目添加到我的菜单中:
mMenu.add("title").setIcon(R.drawable.ic_group);
理想情况下,我想将它添加到 "menu_group" 组中,但现在我尝试这样做。
layout/activity_main_pager
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:openDrawer="start">
<include
layout="@layout/app_bar_main_pager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_main_pager"
app:menu="@menu/activity_main_pager_drawer" />
</android.support.v4.widget.DrawerLayout>
menu/activity_main_pager_drawer
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:title="@string/menu_title_groups">
<menu>
<group android:id="@+id/menu_groups">
<item
android:id="@+id/menu_add_group"
android:icon="@drawable/ic_group_add"
android:title="@string/menu_add_group" />
</group>
</menu>
</item>
</menu>
奖励问题:我的菜单项 "menu_add_group" 的图标显示不正确,我用灰色方块代替了它。
谢谢,如果我没有搜索正确,请不要犹豫 link 我另一个话题。
好的,其中一个问题是我获取 mMenu 的方式。我添加了我的救星列出的所有更正加上这个:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main_pager, menu);
return true;
}
在我的 activity 初始化上:
NavigationView nav = (NavigationView) mDrawer.findViewById(R.id.nav_view);
mMenu = nav.getMenu();
当我添加菜单项时:
menu.add("title").setIcon(R.drawable.ic_group);
supportInvalidateOptionsMenu();
更改菜单项后,如果您使用的是支持库,则需要调用 invalidateOptionsMenu() (or supportInvalidateOptionsMenu。 Android 将知道它需要重新创建它并再次调用 onCreateOptionsMenu(Menu)
。您需要在那里扩充新菜单。
灰色图标是由于项目色调。您可以通过简单地调用 mNavigationView.setItemIconTintList(null)
.
来删除它
我有一个基本问题,令我惊讶的是我没有找到已经解决该问题的主题:我无法将元素添加到抽屉式导航菜单。
我保留了菜单参考:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main_pager, menu);
mMenu = menu;
return true;
}
并且在 AsyncTask 的回调中,我尝试以这种方式将项目添加到我的菜单中:
mMenu.add("title").setIcon(R.drawable.ic_group);
理想情况下,我想将它添加到 "menu_group" 组中,但现在我尝试这样做。
layout/activity_main_pager
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:openDrawer="start">
<include
layout="@layout/app_bar_main_pager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_main_pager"
app:menu="@menu/activity_main_pager_drawer" />
</android.support.v4.widget.DrawerLayout>
menu/activity_main_pager_drawer
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:title="@string/menu_title_groups">
<menu>
<group android:id="@+id/menu_groups">
<item
android:id="@+id/menu_add_group"
android:icon="@drawable/ic_group_add"
android:title="@string/menu_add_group" />
</group>
</menu>
</item>
</menu>
奖励问题:我的菜单项 "menu_add_group" 的图标显示不正确,我用灰色方块代替了它。
谢谢,如果我没有搜索正确,请不要犹豫 link 我另一个话题。
好的,其中一个问题是我获取 mMenu 的方式。我添加了我的救星列出的所有更正加上这个:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main_pager, menu);
return true;
}
在我的 activity 初始化上:
NavigationView nav = (NavigationView) mDrawer.findViewById(R.id.nav_view);
mMenu = nav.getMenu();
当我添加菜单项时:
menu.add("title").setIcon(R.drawable.ic_group);
supportInvalidateOptionsMenu();
更改菜单项后,如果您使用的是支持库,则需要调用 invalidateOptionsMenu() (or supportInvalidateOptionsMenu。 Android 将知道它需要重新创建它并再次调用 onCreateOptionsMenu(Menu)
。您需要在那里扩充新菜单。
灰色图标是由于项目色调。您可以通过简单地调用 mNavigationView.setItemIconTintList(null)
.