Android 如何更改附加到导航视图的子菜单的文本和图标的颜色?

Android 如何更改附加到导航视图的子菜单的文本和图标的颜色?,android,xml,menu,navigation-drawer,submenu,Android,Xml,Menu,Navigation Drawer,Submenu,我正试图弄清楚如何更改实际附加到导航视图的子菜单项的颜色。以下代码实际上来自android studio中提供的导航抽屉的默认模板 活动\u main\u drawer.xml activity_main.xml 颜色不适用于子菜单,所以,我想做的是。。我想更改菜单项“通讯”和子菜单项“发送”和“共享”的颜色,因为它适用于根菜单项您的子菜单需要包装在菜单和组标签中,如下所示。这将允许您一次选择一个菜单项。您可以通过将项目设置为在NavigationView.OnNavigationI

我正试图弄清楚如何更改实际附加到导航视图的子菜单项的颜色。以下代码实际上来自android studio中提供的导航抽屉的默认模板

活动\u main\u drawer.xml


activity_main.xml



颜色不适用于子菜单,所以,我想做的是。。我想更改菜单项“通讯”和子菜单项“发送”和“共享”的颜色,因为它适用于根菜单项

您的子菜单需要包装在菜单和组标签中,如下所示。这将允许您一次选择一个菜单项。您可以通过将项目设置为在NavigationView.OnNavigationItemSelectedListener中选中来选择它们

<?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/nav1"
            android:checked="true"
            android:icon="@drawable/myd1"
            android:title="Nav 1"
            />
    </group>
    <item android:title="@string/nav_item_subheading_app">
        <menu>
            <group android:checkableBehavior="single">
                <item
                    android:id="@+id/nav1"
                    android:icon="@drawable/myd1"
                    android:title="Nav 1"
                    />
            </group>
        </menu>
    </item>
</menu>

在导航视图中更改标题和副标题的颜色,并将以下代码粘贴到res>values>style.xml中

 <style name="NavigationViewStyle">
    <item name="android:textSize">16sp</item> <!-- menu item text size-->
    <item name="android:listPreferredItemHeightSmall">40dp</item><!-- menu item height-->
    <item name="android:textColorPrimary">@android:color/white</item>
    <item name="android:textColorSecondary">#FFB300</item>
</style>

16便士
40dp
@android:彩色/白色
#FFB300
NavigationView将标题颜色设置为textcolor次要,将副标题颜色设置为textcolor主要

最后,在navigationView中添加此样式

 <android.support.design.widget.NavigationView
    android:id="@+id/navview"
    android:layout_width="300dp"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:background="#022F56"
    app:headerLayout="@layout/sidebar_header"
    app:theme="@style/NavigationViewStyle"
    app:menu="@menu/sidebar_home"/>


仅此而已,祝您编码愉快。

谢谢您的工作。。但我还想更改组外项目的颜色,我的意思是用于副标题。。在我的例子“communicate”中,我认为默认设置为textColorSecondary,您可以尝试在主题中覆盖该视图。
<?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/nav1"
            android:checked="true"
            android:icon="@drawable/myd1"
            android:title="Nav 1"
            />
    </group>
    <item android:title="@string/nav_item_subheading_app">
        <menu>
            <group android:checkableBehavior="single">
                <item
                    android:id="@+id/nav1"
                    android:icon="@drawable/myd1"
                    android:title="Nav 1"
                    />
            </group>
        </menu>
    </item>
</menu>
 <style name="NavigationViewStyle">
    <item name="android:textSize">16sp</item> <!-- menu item text size-->
    <item name="android:listPreferredItemHeightSmall">40dp</item><!-- menu item height-->
    <item name="android:textColorPrimary">@android:color/white</item>
    <item name="android:textColorSecondary">#FFB300</item>
</style>
 <android.support.design.widget.NavigationView
    android:id="@+id/navview"
    android:layout_width="300dp"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:background="#022F56"
    app:headerLayout="@layout/sidebar_header"
    app:theme="@style/NavigationViewStyle"
    app:menu="@menu/sidebar_home"/>