导航抽屉项目图标不显示原始颜色

2022-08-31 07:44:14

我试图在导航抽屉的菜单中的某个项目旁边显示一个图标,但由于某种原因,图标始终显示为灰色而不是原始颜色(棕色)。有没有办法防止这种情况发生,以显示图标的原始颜色?

主要活动.java

public class MainActivity extends AppCompatActivity {

    private DrawerLayout mDrawerLayout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);

        NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
        if (navigationView != null) {
            setupDrawerContent(navigationView);
        }
    }

    private void setupDrawerContent(NavigationView navigationView) {
        navigationView.setNavigationItemSelectedListener(
                new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(MenuItem menuItem) {
                mDrawerLayout.closeDrawers();

                return true;
            }
        });
    }
}

drawer_view.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:title="Section">
        <menu>
            <item
                android:id="@+id/navigation_item_1"
                android:icon="@drawable/ic_browncircle"
                android:title="Sub item 1" />
        </menu>
    </item>
</menu>

enter image description here


答案 1

我在这里找到了答案:https://stackoverflow.com/a/30632980/875249

为了避免链接,它非常简单:

    mNavigationView.setItemIconTintList(null);

这将禁用所有基于状态的着色,但您也可以指定自己的列表。它对我来说效果很好!

在这里,您可以获得有关创建颜色状态列表的详细信息,但它也非常简单:http://developer.android.com/reference/android/content/res/ColorStateList.html

    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_checked="true" android:color="@color/primary" />
        <item android:state_checked="false" android:color="@android:color/white" />
    </selector>

答案 2

    mNavigationView.setItemIconTintList(null);

没错。另外,如果您的所有图标都在一个配色方案中(我全是白色的),您可以通过xml文件进行设置 - app:itemIconTint=“@android:color/white”

我的情况:

<android.support.design.widget.NavigationView
    android:id="@+id/nav_view"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:clickable="true"
    app:headerLayout="@layout/nav_header_main"
    app:itemTextColor="@android:color/white"
    app:menu="@menu/activity_main_drawer"
    android:background="@android:color/black"
    app:itemIconTint="@android:color/white"
    />

推荐