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

时间:2015-10-07 14:01:50

标签: android xml menu navigation-drawer submenu

我试图找出如何更改实际附加到导航视图的子菜单项的颜色。以下代码实际上来自导航抽屉的默认模板,可在android studio中找到。

activity_main_drawer.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_camara"
            android:icon="@android:drawable/ic_menu_camera"
            android:title="Import"
            />
        <item
            android:id="@+id/nav_gallery"
            android:icon="@android:drawable/ic_menu_gallery"
            android:title="Gallery"/>
        <item
            android:id="@+id/nav_slideshow"
            android:icon="@android:drawable/ic_menu_slideshow"
            android:title="Slideshow"/>
        <item
            android:id="@+id/nav_manage"
            android:icon="@android:drawable/ic_menu_manage"
            android:title="Tools"/>
    </group>

    <item android:title="Communicate">
        <menu>
            <item
                android:id="@+id/nav_share"
                android:icon="@android:drawable/ic_menu_share"
                android:title="Share"/>
            <item
                android:id="@+id/nav_send"
                android:icon="@android:drawable/ic_menu_send"
                android:title="Send"/>
        </menu>
    </item>

</menu>

activity_main.xml中

  

      

    <include
        layout="@layout/app_bar_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

    <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="#512DA8"
        app:headerLayout="@layout/nav_header_main"
        app:menu="@menu/activity_main_drawer"
        app:itemTextColor="@drawable/nav_menu_item_color"
        app:itemIconTint="@drawable/nav_menu_item_color"/>

</android.support.v4.widget.DrawerLayout>

我有一个可绘制的文件,用于点击和正常颜色,以上是实际使用的。 nav_menu_item_color.xml

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


</selector>

因此,您可以看到我在下面附带的结果图片: - Color of Sub-Menu Items didn't change

颜色不适用于子菜单,所以,我想要做的是..我想改变菜单项的颜色&#34;沟通&#34;和子菜单项&#34;发送&#34;和&#34;分享&#34;因为它适用于根菜单项

2 个答案:

答案 0 :(得分:4)

您的子菜单需要包含在菜单和菜单中。组标签如下。这将允许您一次选择任何一个菜单项。您可以通过在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>

答案 1 :(得分:2)

在导航视图中更改标题和副标题的颜色,并将以下代码粘贴到 res&gt;值&gt; styles.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>

NavigationView将标题颜色设置为textcolor secondary和subheader颜色作为textColor Primary。

最后,在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"/>

输出将是, enter image description here

多数人,快乐的编码。