Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何更改菜单的标题颜色';s在NavigationView';s的xml文件_Java_Android_Android Layout - Fatal编程技术网

Java 如何更改菜单的标题颜色';s在NavigationView';s的xml文件

Java 如何更改菜单的标题颜色';s在NavigationView';s的xml文件,java,android,android-layout,Java,Android,Android Layout,我有一个菜单,它显示在导航视图(侧导航)中 菜单具有这样的结构,菜单标记不仅有自己的子项标记,而且它们(菜单标记)也包含在父项标记中 例如: <?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:showI

我有一个菜单,它显示在
导航视图
(侧导航)中

菜单具有这样的结构,菜单标记不仅有自己的子项标记,而且它们(菜单标记)也包含在父项标记中

例如:

<?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">

    <item android:title="User Profile">
        <menu>
            <item
                android:id="@+id/profile"
                android:icon="@drawable/ic_user"
                android:title="Profile" />
            <item
                android:id="@+id/account"
                android:icon="@android:drawable/ic_secure"
                android:title="Account" />
        </menu>
    </item>

    <item android:title="Ride Now">
        <menu>
            <item
                android:id="@+id/find_ride"
                android:icon="@drawable/car_1"
                android:title="Find A Ride" />
            <item
                android:id="@+id/offer_ride"
                android:icon="@drawable/car_1"
                android:title="Offer A Ride" />
        </menu>
    </item>
    <item android:title="Booking History">
        <menu>
            <item
                android:id="@+id/offered_rides"
                android:icon="@drawable/ic_menu_share"
                android:title="Rides offered"
                />
            <item
                android:id="@+id/booked_rides"
                android:icon="@drawable/ic_menu_send"
                android:title="Rides Booked" />
            <item
                android:id="@+id/cancelled_rides"
                android:icon="@drawable/ic_menu_send"
                android:title="Rides Cancelled" />

        </menu>
    </item>

</menu>

我已经能够使用以下方法在菜单标记中设置项目标题颜色:

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

但是我需要为菜单标记的父项设置项目的标题颜色。我如何做到这一点

注意:
@+id/nav_视图
是拥有菜单的
导航视图


请,我希望答案是基于xml的,而不是基于Java的

您需要在style.xml中添加android:textColorSecondary

将以下代码粘贴到用作主题的样式中。你可以随意改变颜色

 <item name="android:textColorSecondary">@color/colorPrimary</item>
@color/colorPrimary

这对我来说很有用,因为你不想改变所有物品的颜色,你必须通过代码:

public SpannableString getColoredSpannableString(String s, int color) {
    SpannableString str = new SpannableString(s);
    str.setSpan(new ForegroundColorSpan(color), 0, s.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    return str;
}

public void makeMenuItemColored(MenuItem mi, int color) {
    mi.setTitle(getColoredSpannableString(mi.getTitle().toString(), color));
}

并像这样使用它:

makeMenuItemColor(mi,ContextCompat.getColor(this,R.color.colorPrimary))

或者
makeMenuItemColor(mi,yourColor)

其中
mi
是您的菜单项,您可以通过
int

选择颜色资源或颜色。您说过“它适合我”。。。我最好告诉你,这对我也很有效。谢谢,@JDevoloper.Yeah这更好:)谢谢,但我提到我更喜欢基于xml的答案。我认为特定菜单项没有xml属性。请查看接受的答案。它的全部内容是控制不同项目级别的属性,指定的属性控制外部项目标记的属性。这不适用于所有菜单项吗?不适用于顶级项目。我使用app:itemTextColor=“@color/app_white_scheme”更改菜单中项目的颜色。(我将其放置在NavigationView的xml标记中)