单击时更改动态呈现的导航菜单项的文本颜色

时间:2016-05-31 07:08:01

标签: android navigation navigation-drawer

所以我有一个导航菜单,导航视图是这样的: -

<group 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" />
    <item
        android:id="@+id/nav_slideshow"
        android:icon="@drawable/ic_menu_slideshow"
        android:title="Slideshow" />
    <item
        android:id="@+id/nav_manage"
        android:icon="@drawable/ic_menu_manage"
        android:title="Tools" />
</group>

<item android:title="Communicate">
    <menu>
        <item
            android:id="@+id/nav_share"
            android:icon="@drawable/ic_menu_share"
            android:title="Share" />
        <item
            android:id="@+id/nav_send"
            android:icon="@drawable/ic_menu_send"
            android:title="Send" />
    </menu>
</item>

所以我在这里做的是我动态添加Foo,bar等作为菜单项。但是,当我单击它们时,它们不会突出显示为已在菜单布局中显式声明的其他菜单项。

菜单布局:

 @SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
    // Handle navigation view item clicks here.
    int id = item.getItemId();

    if (id == R.id.nav_camera) {
        // Handle the camera action
    } else if (id == R.id.nav_gallery) {
    } else if (id == R.id.nav_slideshow) {

    } else if (id == R.id.nav_manage) {

    } else if (id == R.id.nav_share) {

    } else if (id == R.id.nav_send) {

    }

我的onNavigationItemSelected:

<div class="container">

现在当我选择,foo,bar等时,它们会被选中,但是它们的文字颜色不会改变。我怎么能纠正这个? 此外,在onNavigationItemSelected(MenuItem项目)中,如何为这些动态添加的项目分配行为,这些项目没有项目ID?

1 个答案:

答案 0 :(得分:0)

我遇到了一个similer问题,我通过调用setCheckedItem(int idRes)的方法NavigationView来解决这个问题。做点什么

@Override
public boolean onNavigationItemSelected(MenuItem item) {
    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);

    // Handle navigation view item clicks here.
    int id = item.getItemId();

    // Set the item as checked.
    navigationView.setCheckedItem(id);

    if (id == R.id.nav_camera) {
        // Handle the camera action
    } else if (id == R.id.nav_gallery) {
    } else if (id == R.id.nav_slideshow) {

    } else if (id == R.id.nav_manage) {

    } else if (id == R.id.nav_share) {

    } else if (id == R.id.nav_send) {

    }