如何更改导航视图子菜单标题标题的背景颜色?

时间:2015-12-15 02:13:22

标签: android material-design navigation-drawer background-color navigationview

给定一个带有子菜单项的部分的NavigationView,如下所示:

<menu xmlns:android="http://schemas.android.com/apk/res/android">

  <item android:title="Sub items">
    <menu>
      <item android:title="Sub item 1" />
      <item android:title="Sub item 2" />
    </menu>
  </item>
</menu>

问题:如何更改子项目行的背景颜色?

在我的实验中,看起来用于子菜单标题行/项的颜色与NavigationView的背景颜色(android:backgroundTint和android:background)相同,但我还没有找到指定方法的方法两个分开。我需要背景颜色为一种颜色,子菜单标题行/项目需要另一种颜色。

enter image description here

2 个答案:

答案 0 :(得分:0)

itemBackgrounditemIconTintitemTextColor是可以设置的简单xml属性,但您必须使用自定义前缀而不是android:one。

实施例

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true">

    <!-- Other layout views -->

    <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"
        app:itemBackground="@drawable/my_ripple"
        app:itemIconTint="#2196f3"
        app:itemTextColor="#009688"
        app:headerLayout="@layout/nav_header"
        app:menu="@menu/drawer_view" />

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

实施例 创建一个新的*.xml file in /res/color - 让我们将其命名为state_list.xml - 包含以下内容:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- This is used when the Navigation Item is checked -->
    <item android:color="#009688" android:state_checked="true" />
    <!-- This is the default text color -->
    <item android:color="#E91E63" />
</selector>

并简单地引用它:app:itemTextColor="@color/state_list"

itemIconTint也是如此。 itemBackground需要资源ID。

答案 1 :(得分:0)

使用compile&#39; com.android.support:appcompat-v7:23.1.1&#39;

<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
app:headerLayout="@layout/nav_header_main_navigation"
app:itemBackground="@drawable/nav_view_item_background"
app:itemTextColor="@color/nav_item_text_color"
app:menu="@menu/activity_main_navigation_drawer" />

用于项目backgroud的以下XML文件:nav_view_item_background.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/colorPrimary" android:state_checked="true" />
<item android:drawable="@android:color/transparent" />

用于文本颜色的以下XML文件:nav_item_text_color

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/white" android:state_checked="true" />
<item android:color="@android:color/black" />