Android导航抽屉菜单项无法高亮选择项目

时间:2016-06-20 13:49:25

标签: android android-navigation-drawer

第一项突出显示,休息时无法点亮:

这是我的bg选择器:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/accent_translucent" android:state_pressed="true"/>
<item android:drawable="@android:color/transparent"/>

我试过

  1. onNavigationItemSelected(navigationView.getMenu().getItem(0));

  2. onNavigationItemSelected(navigationView.getMenu().findItem(R.id.nav_profile));

  3. navigationView.setCheckedItem(id);

  4. 似乎没什么工作

    <?xml version="1.0" encoding="utf-8"?>
    

    <group
        android:checkableBehavior="single">
    
        <item
            android:id="@+id/drawer_main"
            android:checked="true"
            android:icon="@drawable/ic_home_black_24dp"
            android:title="@string/dashboard"/>
    
        <item
            android:id="@+id/drawer_profile"
    
            android:icon="@drawable/ic_favorite_black_24dp"
            android:title="@string/profile"/>
    
        <item
            android:id="@+id/drawer_third"
    
            android:icon="@drawable/ic_file_download_black_24dp"
            android:title="@string/leaderboard"/>
    
        <item
            android:id="@+id/drawer_fourt"
    
            android:icon="@drawable/ic_more_horiz_black_24dp"
            android:title="@string/notification"/>
    
        <item
            android:id="@+id/drawer_fifth"
    
            android:icon="@drawable/ic_settings_black_24dp"
            android:title="@string/logout"/>
    
    </group>
    

     navigationView = (NavigationView) findViewById(R.id.navigation_view);
        navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
    
            @Override
            public boolean onNavigationItemSelected(MenuItem menuItem) {
    
                int id = menuItem.getItemId();
    
                switch (id) {
                    case R.id.drawer_dashboard:
                        Intent i = new Intent(getApplicationContext(), MainActivity.class);
                        startActivity(i);
                        break;
    case R.id.drawer_profile:
                        Intent j = new Intent(getApplicationContext(), secondActivity.class);
                        startActivity(j);
                        break;
    

    任何想法都会有所帮助

    如果我使用下面的代码,我可以突出显示但无法开始新活动

     navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
    
            @Override
            public boolean onNavigationItemSelected(MenuItem menuItem) {
    
                int id = menuItem.getItemId();
                menuItem.setChecked(true);
                drawerLayout.closeDrawers();
                return true;
    

2 个答案:

答案 0 :(得分:1)

创建视图时,请尝试使用getItem(int index)方法获取所有MenuItem,然后调用setCheckable(true),确保它是可以检查的。

答案 1 :(得分:0)

Android允许非常有限的菜单项访问。突出显示菜单项的最佳方法是在菜单中使用褪色图标,如果要突出显示,只需将图标替换为彩色图标。

 navigationView.getMenu().findItem(R.id.drawer_dashboard‌).setIcon(R.drawable.icon_highlighted_icon);

并为休息重置正常图标。

此外,请尝试旧代码 -

onNavigationItemSelected(navigationView.getMenu().getItem(id));
navigationView.setCheckedItem(id);

此处用当前项目位置替换id。

希望它会对你有所帮助:)。