NavigationView更改菜单icon和title颜色变化效果

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

选中的菜单icon和title会变成应用的主颜色

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

1. XML布局文件设置

 <android.support.design.widget.NavigationViewandroid: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

转载于:https://www.cnblogs.com/Free-Thinker/p/8981930.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/452793.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

kangle服务器搭建java_linux下kangle虚拟主机-架设java空间的教程及心得

1. chmod x jdk-6u31-linux-i586-rpm.bin2. ./jdk-6u31-linux-i586-rpm.bin复制代码(注&#xff1a;如果下载的版本不同输入实际版本)2.下载插件包:1. wget http://www.kanglesoft.com/download/ent/easypanel-tomcat-lin-1.0.tar.gz2. tar xzf easypanel-tomcat-lin-1.0.tar.g…

Django项目--csrf攻击

1.案例流程图&#xff1a; 2.django防止csrf的方式&#xff1a; 1 ) Django中默认打开csrf中间件。settings.py文件中&#xff1a; MIDDLEWARE_CLASSES (django.contrib.sessions.middleware.SessionMiddleware,django.middleware.common.CommonMiddleware,django.middlewar…

mysql count(*),count(1)与count(column)区别

2019独角兽企业重金招聘Python工程师标准>>> count(*)对行的数目进行计算&#xff0c;包含NULL count(column)对特定的列的值具有的行数进行计算&#xff0c;不包含NULL值。 count()还有一种使用方式&#xff0c;count(1)这个用法和count(*)的结果是一样的。 性能问…

Flask项目--预防csrf攻击原理

1.CSRF机制原理 2.csrf成功攻击示意图 3.csrf防御

Flsak项目--图片验证码

0. 图片验证码的使用流程 2.后端接口编写 verify_code.py中编写接口代码&#xff1a; # coding:utf-8from . import api from ihome.utils.captcha.captcha import captcha from ihome import redis_store, constants, db from flask import current_app, jsonify, make_respo…

js异步解决方案 --- 回调函数 vs promise vs generater/yield vs async/await

javascript -- 深度解析异步解决方案 高级语言层出不穷, 然而唯 js 鹤立鸡群, 这要说道js的设计理念, js天生为异步而生, 正如布道者朴灵在 node深入浅出--(有兴趣的可以读一下, 很有意思^_^) , 异步很早就存在于操作系统的底层, 意外的是&#xff0c;在绝大多数高级编程语言中…

sql注入基本原理

1. 参考文献&#xff1a; 趣解SQL注入原理 Sql注入基本原理 2.参考书籍

centos7硬盘分区

首先在虚拟机的设置中为系统添加硬盘 使用fdisk -l /dev/sdb 查看未分区的硬盘 fdisk -l /dev/sda 这是已经分区好得 接下来我们就要对sdb进行分区: 首先使用fdisk /dev/sdb 接着输入m可以看到详细命令 进行添加分区 已经建立好4个主分区&#xff0c;在建立时会看到以下 删除…

从MapReduce的执行来看如何优化MaxCompute(原ODPS) SQL

摘要&#xff1a; SQL基础有这些操作&#xff08;按照执行顺序来排列&#xff09;&#xff1a; from join(left join, right join, inner join, outer join ,semi join) where group by select sum distinct count order by 如果我们能理解mapreduce是怎么实现这些SQL中的基本操…

套接字(socket)基本知识与工作原理

套接字&#xff08;socket&#xff09;基本知识与工作原理 一、Socket相关概念 Socket通常也称作“套接字”&#xff0c;用于描述IP地址和端口&#xff0c;是一个通信链的句柄。&#xff08;其实就是两个程序通信用的。&#xff09; SOCKET用于在两个基于TCP/IP协议的应用程序之…

python 多线程--重点知识

1.全局变量global的用法 2.多线程共享全局变量-args参数 注意args参数类型为元组&#xff0c;逗号不能少&#xff01;

当导用模块与包的import与from的问题(模块与包的调用)

当在views.py里写impor models会不会报错呢&#xff1f; 1、Python里面的py文件都是每一行的代码。2、Python解释器去找一个模块的时候&#xff0c;只去sys.path的路径里找3、django项目启动&#xff08;django项目的启动文件是manage.py&#xff09;启动项目是将manage.py的路…

Python多线程--互斥锁、死锁

1、互斥锁 为解决资源抢夺问题&#xff0c;使用mutex Threading.Lock()创建锁&#xff0c;使用mutex.acquire()锁定&#xff0c;使用mutex.release()释放锁。 代码一&#xff1a; import threading import time# 定义一个全局变量 g_num 0def test1(num):global g_num# 上锁…

freemind 要下载java_Freemind

动手编辑先按Ctrln&#xff0c;新建一个文件。这时出现了一个根节点。用光标单击它&#xff0c;改成“我学FreeMind”&#xff0c;然后在节点之外任一地方点击鼠标(或按Enter)完成编辑。然后&#xff0c;按Insert键&#xff0c;输入“下载安装”&#xff0c;按Enter键&#xff…

pyecharts对于经纬度_一文带你掌握Pyecharts地理数据可视化的方法

本文主要介绍了Pyecharts地理数据可视化&#xff0c;分享给大家&#xff0c;具体如下&#xff1a;一、Pyecharts简介和安装1. 简介Echarts 是一个由百度开源的数据可视化&#xff0c;凭借着良好的交互性&#xff0c;精巧的图表设计&#xff0c;得到了众多开发者的认可。而 Pyth…

使用Sqlmap对dvwa进行sql注入测试(初级阶段)

0.测试准备 1&#xff09;打开Kali虚拟机终端; 2&#xff09;打开靶机OWASP&#xff0c;并通过浏览器&#xff0c;输入IP地址进入dvwa的主页&#xff0c;然后选择SQL injection进入SQL注入的测试页面 1.获取DVWA的url和cookie 在输入框中输入1&#xff0c;显示有内容&…

如果备份还原SecureCRT、Xshell远程工具远程

因为有时候电脑操作系统要重新安装&#xff0c;需要将远程备份下来。或者要将远程发给其他同事。一、如何备份还原SecureCRT远程1、打开options-global options---general---configuration paths找到配置文件保存路径&#xff0c;如下图&#xff1a;2、打开C:\Users\NUC\AppDat…

Centos7 下yum安装mysql

转载于:https://www.cnblogs.com/nbjjy/p/9023991.html

Python协程--实现斐波那契数列(Fibonacci)的几种方式

1.使用for遍历list数组 # 使用for遍历list数组 nums list() a 0 b 1 i 0while i < 10:nums.append(a)a, b b, abi 1for num in nums:print(num)2.使用迭代器完成 class Fibonacci(object):def __init__(self, all_num):self.all_num all_numself.current_num 0sel…