我有一个 菜单 ,它显示在NavigationView
(侧面导航)中。
菜单 具有这种结构,其中 菜单 标签不仅具有自己的子元素项目标签,但它们( 菜单 标签)也包含在父 item 标签中。
示例:
<?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" />
但是我需要为 menu 标记的父项项设置标题颜色。我该怎么做?
注意:@+id/nav_view
是拥有菜单
NavigationView
请,我希望答案是基于xml的,而不是基于Java的
答案 0 :(得分:1)
您需要将android:textColorSecondary添加到您的style.xml中
将以下代码粘贴到用作主题的样式中。您可以根据需要更改颜色。
<item name="android:textColorSecondary">@color/colorPrimary</item>
对我有用
答案 1 :(得分:0)
由于您不想更改所有项目的颜色,因此必须通过代码进行更改:
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