30

所以我使用的是Android Design Support Library提供的 NavigationView

在此处输入图像描述

我似乎无法找到有关如何设置样式的示例。

到目前为止,我有:

<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更改项目背景颜色

那么如何设置

  • 所选项目背景
  • 所选项目文本颜色
  • 所选项目图标色调
4

2 回答 2

45

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

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

现在在里面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:colorfor itemBackground

<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
于 2015-06-28T09:05:29.227 回答
3

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

另外API >= 21,我注意到导航菜单项默认有一个预设选择器。您会注意到,如果您触摸并按住菜单项,则会出现一个波纹。使用自定义itemBackground不会覆盖默认波纹。因此,如果您使用 aripple drawable它会产生两个涟漪!此外,由于某种原因,菜单项ripple drawables不允许您处于按下状态(默认波纹只有在您按住时才会出现)。

因此,API >= 21我不建议使用ripple drawable. selector drawable只需使用没有自定义涟漪的常规。

于 2016-01-26T01:38:02.573 回答