Wai Yan Hein
Wai Yan Hein

Reputation: 14791

Programmatically setting icon to navigation drawer menu item using drawable resource is always black in Android

I am developing an Android app. In my app I am using navigation drawer and navigation view. I am setting menu items for them programmatically. I set drawable image resource as icon to them programmatically. But when I set icon to them, icons are always black event my image resource beautiful color image.

This is how I programmatically set icon to menu

Menu menu = leftDrawer.getMenu();
        SubMenu subMenu = menu.addSubMenu(MAIN_MENU_ITEM_GROUP_ID, 99, 99, "Others");

        subMenu.add(MAIN_MENU_ITEM_GROUP_ID,96,96,"Monthly Leaderboard").setIcon(R.drawable.leaderboard_icon).setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                startActivity(new Intent(MainActivity.this, LeaderboardActivity.class));
                return false;
            }
        });

        subMenu.add(MAIN_MENU_ITEM_GROUP_ID,96,96,"Settings").setIcon(R.drawable.settings_icon).setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                startActivity(new Intent(MainActivity.this, SettingsActivity.class));
                return false;
            }
        });

This is the screenshot of what I have got

enter image description here

As you can see icons are black.

This is one of my original icon

enter image description here

Why is that happening and how can I fix it to get colorful icon? I have to set it programmatically.

Upvotes: 2

Views: 3533

Answers (1)

Saurabh Vardani
Saurabh Vardani

Reputation: 1861

Try the following line of code to resolve your problem...

yourNavigationView.setItemIconTintList(null)

And,

If you want to give specific color then You can change the color by using app:itemIconTint="@color/my_desired_colour" to NavigationView.

The default tint is black.`

Upvotes: 2

Related Questions