我有一个基本问题,我很惊讶我没有找到一个已经处理过这个问题的话题:我在导航抽屉菜单中添加元素时遇到了麻烦。
我保留了菜单的参考:
@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”组中添加它,但是现在我就这样试试。
布局/ 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>
菜单/ 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”项目的图标无法正确显示,我有一个灰色方块而不是它。
谢谢,如果我没有搜索相关内容,请不要犹豫,将我链接到另一个主题。
好的一个问题是我得到我的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;
}
和我的活动init:
NavigationView nav = (NavigationView) mDrawer.findViewById(R.id.nav_view);
mMenu = nav.getMenu();
当我添加菜单项时:
menu.add("title").setIcon(R.drawable.ic_group);
supportInvalidateOptionsMenu();
答案 0 :(得分:0)
更改菜单项后,您需要致电invalidateOptionsMenu()(或supportInvalidateOptionsMenu如果您正在使用支持库)。然后Android会知道它需要重新创建它并再次调用onCreateOptionsMenu(Menu)
。你需要在那里给新菜单充气。
灰色图标归因于项目色调。您只需拨打mNavigationView.setItemIconTintList(null)
即可将其删除。