无法更改android中导航菜单图标的颜色

时间:2018-03-22 05:26:57

标签: android android-layout navigation-drawer menuitem

我正在我的应用中创建导航栏。并且根据要求我在导航视图的右侧放置了菜单图标但问题是这个我在选择菜单项目时无法改变菜单图标的颜色。如果图标在左侧,则图标颜色会发生变化。所以我想知道如何在右侧更改导航菜单图标颜色。

menu.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:showIn="navigation_view">
<group android:checkableBehavior="single">
<item
    android:id="@+id/home"
    android:title="@string/home" />

<item
    android:id="@+id/my_profile"
    android:title="@string/my_profile" />

代码 menu_home.xml

此文件用于在导航视图右侧添加图像。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:orientation="vertical">

    <LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/home"/>

</LinearLayout>

导航查看活动代码

这里我设置了代码,将图像对齐导航视图右侧。

NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.getMenu().getItem(0).setActionView(R.layout.menu_home);
navigationView.getMenu().getItem(1).setActionView(R.layout.menu_profile);
navigationView.setNavigationItemSelectedListener(this);

Image of navigation drawer right side icon color not changed

1 个答案:

答案 0 :(得分:0)

首先,您需要使用两个图像,一个没有颜色,第二个是颜色(您想要的颜色)。

在drawable文件夹中添加两个图像,然后

首先设置默认图像(不带颜色)。 当您单击导航项时,设置彩色图像。

因此您确实看到颜色是根据导航图标颜色更改的图像。

试试这样:

@Override
public boolean onNavigationItemSelected(MenuItem item) {
    // Handle navigation view item clicks here.
    int id = item.getItemId();
    img.setImageDrawable(getResources().getDrawable(R.mipmap.ic_launcher));
    if (id == R.id.nav_camera) {
        // Handle the camera action
        img.setImageDrawable(getResources().getDrawable(R.drawable.ic_arrow_back));
    } else if (id == R.id.nav_gallery) {

    }
}

示例导航抽屉xml

<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:fitsSystemWindows="true"
        app:headerLayout="@layout/nav_header_main"
        app:menu="@menu/activity_main_drawer">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <ImageView
                android:id="@+id/img"
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:layout_alignParentEnd="true"
                android:layout_alignParentRight="true"
                android:layout_alignParentTop="true"
                android:layout_marginEnd="28dp"
                android:layout_marginRight="28dp"
                android:layout_marginTop="195dp"
                android:src="@mipmap/ic_launcher" />
        </RelativeLayout>
</android.support.design.widget.NavigationView>