NavigationView menu默认icon和title会随着菜单状态改变而改变,选择某个菜单后再次打开侧边菜单后会发现该菜单的icon和title会变成应用的主颜色,其他菜单项仍然为黑色。

如果想关闭系统默认的这个效果,有两种方式:

1. XML布局文件设置

 <android.support.design.widget.NavigationView
android:id="@+id/mainNavView"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_main"
app:itemTextColor="@color/colorPrimary"
app:itemIconTint="@color/colorPrimary"
app:menu="@menu/main_drawer">
</android.support.design.widget.NavigationView>

代码中的app:itemTextColor=”@color/colorPrimary”设置菜单title的颜色,app:itemIconTint=”@color/colorPrimary”设置菜单icon的颜色,如果icon的颜色设为null,即app:itemIconTint=”@null”,则icon的颜色还是会随菜单的状态改变而改变。

2.代码中设置

mainNavView.setItemTextColor(null);
mainNavView.setItemIconTintList(null);

这样设置后icon和title的颜色就是默认的了,比如说你的icon原图是红色的,那么显示就是红色,而title默认都是黑色的。

如果你想自定义系统默认的颜色变化,也有如下两种方式:

1.XML资源文件设置

新建一个selector为根标签的资源文件,名称姑且为nav_menu_text_color,代码如下:

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

然后在java代码中将该资源文件设置为icon和title的颜色即可。

 mainNavView.setItemTextColor(resources.getColorStateList(R.drawable.nav_menu_text_color, null));
mainNavView.setItemIconTintList(resources.getColorStateList(R.drawable.nav_menu_text_color, null));

2.代码中设置

int[][] states = new int[][]{
new int[]{ -android.R.attr.state_checked},
new int[]{android.R.attr.state_checked}
}; int[] colors = new int[]{ getResources().getColor(R.color.checked_color),
getResources().getColor(R.color.uncheck_color)
};
ColorStateList csl = new ColorStateList(states, colors); mainNavView.itemTextColor = csl
mainNavView.itemIconTintList = csl

这样设置完成后,选中的菜单icon和title颜色为checked_color,可以随意设置你想要的任何颜色,未选中则是uncheck_color

更改NavigationView侧滑菜单文字颜色的更多相关文章

  1. [BS-19]更改UITextField的placeholder文字颜色的5种方法

    更改UITextField的placeholder文字颜色的5种方法 想要达到的目标是:一个页面上有多个UITextField,当用户聚焦某textField时,该文本框的placeholder的文字 ...

  2. 如何更改placeholder属性中文字颜色

    如何更改placeholder属性中文字颜色 placeholder这个属性是HTML5中新增的属性,该属性的作用是规定可描述输入字段预期值的简短的提示信息,该提示会在用户输入之前显示在输入字段中,会 ...

  3. HTML5之placeholder属性以及如何更改placeholder属性中文字颜色

    今天在群里看到群友问了一个这样的问题,就是如何更改placeholder属性中文字的颜色,以前用过这属性,却是没更改过颜色,于是便试了试,中途遇到些问题,查找资料后特来总结一下. 熟悉HTML5的人应 ...

  4. 转: HTML5之placeholder属性以及如何更改placeholder属性中文字颜色

    今天在群里看到群友问了一个这样的问题,就是如何更改placeholder属性中文字的颜色,以前用过这属性,却是没更改过颜色,于是便试了试,中途遇到些问题,查找资料后特来总结一下. 熟悉HTML5的人应 ...

  5. Toolbar中menu菜单文字颜色的修改

    Toolbar菜单中menu当中我们大多数都使用图片来按钮,可是有些时候我们也会直接使用文字,文字的颜色如何修改呢. 其实很简单,我们只要修改styles.xml文件中,添加一句 <item n ...

  6. VUE Node模式下,如何改变菜单的颜色,如何将超长文字缩略显示,在鼠标进入后展开全部显示,鼠标移出则恢复缩略显示

    VUE Node模式下,如何改变菜单的颜色,如何将超长文字缩略显示,在鼠标进入后展开全部显示,鼠标移出则恢复缩略显示: “事件”引起变量值的变化,系统引擎自动根据变量值的变化刷新页面 在VUE Nod ...

  7. 在带(继承)TextView的控件中,在代码中动态更改TextView的文字颜色

    今天由于公司项目需求,须要实现一种类似tab的选项卡,当时直接想到的就是使用RadioGroup和RadioButton来实现. 这种方法全然没问题.可是在后来的开发过程中,却遇到了一些困扰非常久的小 ...

  8. echarts更改坐标轴文字颜色及大小

    xAxis: { data: anameArr, axisLabel: { show: true, textStyle: { color: '#c3dbff', //更改坐标轴文字颜色 fontSiz ...

  9. iOS开发,更改状态栏(StatusBar)文字颜色为白色

    详细实现步骤 1.如图在Info.plist中进行设置,主要用于处理启动画面中状态栏(StatusBar)文字颜色. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5u ...

随机推荐

  1. 洛谷 [P1436] 反素数

    算术基本定理的应用 算术基本定理: 一个正整数 \(N\) 能唯一分解成如下形式 \[N=p_1 ^ {c_1}p_2^{c_2}\cdots P_m ^ {c_m}\] 其中 \(c_i\) 都是正 ...

  2. Codevs 1026 逃跑的拉尔夫

     时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 年轻的拉尔夫开玩笑地从一个小镇上偷走了一辆车,但他没想到的是那辆车属于警察局,并且 ...

  3. [JSOI2016]反质数序列

    我竟然半个小时切了一道JSOI2016,,,,不敢相信. 首先可以发现,如果N个数中1出现的次数<=1的话,我们按不能在一个集合连无向边的话,连出的一定是一个二分图. 接下来我来证明一下: 因为 ...

  4. Spring 详解(一)------- AOP前序

    目录 1. AOP 简介 2. 示例需求 3. 解决方法一:使用静态代理 4. 解决方法二:使用动态代理 1. AOP 简介 ​ AOP(Aspect Oriented Programming),通常 ...

  5. spring解决乱码

    spring提供的工具类解决乱码问题 在web.xml配置中添加如下代码: <!--乱码处理--> <filter> <filter-name>encodingFi ...

  6. haproxy和nginx负载均衡分析

    https://my.oschina.net/zhuangweihong/blog/813231

  7. Webstorm上面通过babel将es6转化为es5

    1.首先创建一个新的文件夹(名为do);2.然后再根目录下面新建一个package.json,只需要写明两个属性即name和version,这个没有必须要和下面我写的一致,可以自行定义. { &quo ...

  8. 操作系统学习(三)-- CPU调度

    操作系统之进程与线程 L14 CPU调度策略 如何设计调度算法? 调度关键在:折中和综合 IO约束型的任务一般是前台任务,和用户交互:CPU约束型关注周转时间 进程切换过程需要系统内耗,切换时间长则系 ...

  9. BUPT复试专题—复数集合(?)

    https://www.nowcoder.com/practice/abdd24fa839c414a9b83aa9c4ecd05cc?tpId=67&tqId=29643&rp=0&a ...

  10. DirectX11 学习笔记5 - D3DXMath 库

    directx11 特别推出了一个数学库 用于向量 矩阵的计算.并且使用128位 同一时候计算4条32位数据 (SIMD) 之前基本是用的directx10math.h这个头文件.  这个数学库既然是 ...