android - 如何使用java以编程方式更改抽屉导航上所选菜单项的文本和图标颜色

标签 android navigation-drawer

我是 Android 开发的初学者。使用 android 的默认抽屉导航 Activity 我正在开发一个应用程序。此应用程序的要求之一是在运行时随机更改布局的背景颜色(包括抽屉导航标题颜色)。

现在一切正常,只是抽屉导航上所选菜单项的颜色仍然是蓝色。像这样:

enter image description here

现在我想要的是其他布局的背景颜色是粉红色导航栏上选定的菜单项也应该是粉红色(我的意思是文本颜色和图标应该是粉红色),如下所示:

enter image description here

谁能告诉我如何在代码中以编程方式实现它,因为我必须在运行时随机更改选定的文本和图标颜色。

这里是菜单 xml 文件供引用:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">


    <group android:checkableBehavior="single">
        <item
                android:id="@+id/nav_quiz_all"
                android:icon="@drawable/ic_public_black_24dp"
                android:checked="true"
                android:title="All Countries Quiz"/>
        <item
                android:id="@+id/nav_quiz_bookmarked"
                android:icon="@drawable/ic_favorite_black_24dp"
                android:title="Favorite Quiz"/>
    </group>


    <item android:title="Communicate">
        <menu>
            <item
                android:id="@+id/nav_rate"
                android:icon="@drawable/ic_star_black_24dp"
                android:title="Rate this app"/>
            <item
                android:id="@+id/nav_share"
                android:icon="@drawable/ic_share_black_24dp"
                android:title="Share"/>
            <item
                android:id="@+id/nav_feedback"
                android:icon="@drawable/ic_feedback_black_24dp"
                android:title="Feedback"/>
            <item
                android:id="@+id/nav_about"
                android:icon="@drawable/ic_info_black_24dp"
                android:title="About"/>
        </menu>
    </item>


    <item
        android:id="@+id/nav_settings"
        android:icon="@drawable/ic_settings_black_24dp"
        android:title="Settings"/>

</menu>

最佳答案

首先检查下面的 NavigationView

<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"
        android:background="@color/white"
        app:itemIconTint="@drawable/drawer_item_color"
        app:itemTextColor="@drawable/drawer_item_color"
        app:headerLayout="@layout/nav_header_main"
        app:menu="@menu/activity_main_drawer" />

在这里检查两件事

app:itemIconTint="@drawable/drawer_item_color"
app:itemTextColor="@drawable/drawer_item_color"

这两个标签都使用 drawer_item_color.xml 这是可绘制文件夹中的选择器,下面是它的代码

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/pink" android:state_checked="true" />
    <item android:color="@color/black" />
</selector>

使用选择器并添加您想要的颜色。这将为您完成这项工作。

关于android - 如何使用java以编程方式更改抽屉导航上所选菜单项的文本和图标颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42700908/

相关文章:

android - 以编程方式比较下载的 apk 文件版本与安装的操作系统版本

java.lang.NullPointerException 无法找出导致错误的原因

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

android - 工具栏标题全宽

android - ViewPager 内部 fragment 问题

java - 应用程序在启动时崩溃,将按钮代码添加到 mainActivity

Android 导航组件在通过 NavigationDrawer 导航时有延迟

android - 带有 fragment 或 Activity 的抽屉导航?

java - 如何使用Android抽屉导航切换回Main Activity

java - 我的 Android 应用程序猜谜游戏中的错误