簡體   English   中英

如何在NavigationView的xml文件中更改菜單包含項的標題顏色

[英]How to change title color of menu's enclosing item in NavigationView's xml files

我有一個菜單 ,該菜單顯示在NavigationView (側面導航)中。

菜單具有這種結構,其中菜單標簽不僅具有自己的子標簽,而且它們( 菜單標簽)也包含在父標簽中。

例:

<?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_view是擁有菜單NavigationView

請,我希望答案是基於xml的,而不是基於Java的

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

將以下代碼粘貼到您用作主題的樣式中。 您可以根據需要更改顏色。

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

這個對我有用

由於您不想更改所有項目的顏色,因此必須通過代碼進行更改:

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));
}


並像這樣使用它:

makeMenuItemColored(mi, ContextCompat.getColor(this, R.color.colorPrimary));

makeMenuItemColored(mi, yourColor);
其中mi是您的菜單項,您可以通過int選擇顏色資源或顏色

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM