如何样式devise支持库的NavigationView?

所以我正在使用Androiddevise支持库提供的NavigationView

在这里输入图像说明

我似乎无法find如何设置样式的示例。

到目前为止我有:

<android.support.design.widget.NavigationView android:id="@+id/navigation_view" android:layout_height="match_parent" android:layout_width="wrap_content" android:layout_gravity="start" app:headerLayout="@layout/header" app:menu="@menu/drawer" app:itemTextColor="@color/black" app:itemIconTint="@color/black"/> 

样式化标题很容易,因为它在自己的xml布局下,但是主体是菜单资源文件而不是布局。

  • app:itemTextColor更改文本颜色
  • app:itemIconTint更改图标颜色
  • app:itemBackground更改项目背景颜色

那么如何设置

  • 选定的项目背景
  • 选定的项目文字颜色
  • 选定的项目图标色调

Solutions Collecting From Web of "如何样式devise支持库的NavigationView?"

我在这里回答了类似的问题。

基本上你需要做的是使用Color State List Resource 。 为此,首先在color目录内创build一个新的xml (例如drawer_item.xml)(它应该在res目录中)。如果你没有一个名为color的目录,就创build一个。

现在在drawer_item.xml里面做这样的事情

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:color="checked state color" android:state_checked= "true" /> <item android:color="your default color" /> </selector> 

对于itemBackground ,一个单独的drawable需要放置在drawable文件夹中。 名字是相同的drawer_itemandroid:drawable属性需要设置,而不是android:color itemBackground android:color

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

文件shape_rectangle

 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid android:color="#ffffff" /> <!--white color --> </shape> 

文件shape_rectangle_checked

 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid android:color="#25aaf1" /> <!--blue color --> </shape> 

然后像这样在你的导航视图中设置

 app:itemIconTint="@color/drawer_item" //notice here app:itemTextColor="@color/drawer_item" //and here app:itemBackground="@drawable/drawer_item"//and here for changing the background color of the item which is checked 

要展开@ Sash_KP的答案,对于drawable文件夹中的xml ,您不需要@drawable/shape_rectangle@drawable/shape_rectangle_check 。 你可以使用@color/your_color

同样对于API >= 21 ,我注意到导航菜单项默认有一个预设的select器。 你会注意到,如果你触摸并按住菜单项会出现波纹。 使用自定义itemBackground不会覆盖默认的纹波。 因此,如果使用ripple drawableripple drawable ,将会产生两个涟漪! 此外,带有ripple drawables菜单项目不允许您出于某种原因而处于按下状态(默认波纹仅在持续按住时出现)。

所以对于API >= 21我不会推荐使用ripple drawableripple drawable 。 只需使用一个常规的selector drawable没有自定义的涟漪。