Android抽屉导航菜单项无法突出显示所选项目

标签 android navigation-drawer

第一项高亮显示,其余无法高亮显示:

这是我的背景选择器:

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

似乎没有任何效果

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

任何想法都会有帮助

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

 navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {

        @Override
        public boolean onNavigationItemSelected(MenuItem menuItem) {

            int id = menuItem.getItemId();
            menuItem.setChecked(true);
            drawerLayout.closeDrawers();
            return true;

最佳答案

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

关于Android抽屉导航菜单项无法突出显示所选项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37924271/

相关文章:

android - Android 提供了哪些自动消除 overdraw 的能力?

java - 无法在android studio中集成SignalR库

java.lang.NullPointerException : Attempt to invoke virtual method 'ActionBar.setNavigationMode(int)' on a null object reference 异常

android - 抽屉导航中的切换按钮

android - 添加安卓功能

Android Google Maps API v2 显示路线

java - 致命异常 : main Android

具有较低 API 级别的 Android AVD

android - 无法解析 'getSupportActionBar()'

android - 需要抽屉导航的帮助