【问题标题】:Change text colour of dynamically rendered Navigation Menu Item on Click单击时更改动态呈现的导航菜单项的文本颜色
【发布时间】:2016-05-31 07:08:01
【问题描述】:

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

 NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);
        Menu m = navigationView.getMenu();
        SubMenu subMenu = m.addSubMenu("Top Playlists");
        subMenu.add("Foo");
        subMenu.add("Bar");
        subMenu.add("Kamehameha");
        MenuItem mi = m.getItem(m.size()-1);
        mi.setTitle(mi.getTitle());

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

菜单布局:

<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>

我的 onNavigationItemSelected :

 @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) {

    }

现在当我 select 、 foo 、 bar 等时,它们会被选中,但是它们的文本颜色不会改变。我该如何纠正这个问题? 此外,在 onNavigationItemSelected(MenuItem item) 内部,我如何将行为分配给这些没有项目 ID 的动态添加的项目?

【问题讨论】:

    标签: android navigation navigation-drawer


    【解决方案1】:

    我有一个类似的问题,我通过调用NavigationView 的方法setCheckedItem(int idRes) 解决了这个问题。做类似的事情

    @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) {
    
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-09
      • 2017-10-25
      • 2021-09-21
      • 2016-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-04
      相关资源
      最近更新 更多