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

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

原文地址:https://www.cnblogs.com/Free-Thinker/p/8981930.html

时间: 2024-10-28 10:58:03

NavigationView更改菜单icon和title颜色变化效果的相关文章

android按钮被点击文字颜色变化效果

有的时候做应用需要点击按钮时文字颜色也跟着变,松开后又还原,目前发现两种解决方案:第一用图片,如果出现的地方比较多,那么图片的量就相当可观:第二,也就是本文讲到的.废话少说,先贴图片,再上代码. 正常效果: 按下效果: 先在values目录创建color.xml文件,在里面加入以下自定义颜色(注意不是用color标签)的代码: <?xml version="1.0" encoding="utf-8"?> <resources> <dra

W3C 事件切换 颜色变化

颜色变化代码: HTML: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <link rel="stylesheet" type="text/css" href="web6.css"> <scrip

notepad++如何更改编辑界面前背景颜色?

notepad++是一款功能强大的文本编辑器,对于打开各种文本来说都非常的方便,但notepad++默认的背景颜色是纯白的,如果长时间盯着看确实不太舒服.其实,我们可以手动更改notepad++编辑界面的前背景色,达到我们舒服的视觉效果. 方法/步骤 首先说下,前景背景是这么定义的,如图 若要更改默认的前背景颜色,更改的地方在[设置]-[语言格式设置...] 左边选项卡依次要选[Global Styles]-[Default Style],在右边可以发现默认的颜色设置,即前景为黑,背景为白 若要

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

更改UITextField的placeholder文字颜色的5种方法 想要达到的目标是:一个页面上有多个UITextField,当用户聚焦某textField时,该文本框的placeholder的文字会灰色变为白色,当文本框失去焦点时,placeholder颜色从白色再变回灰色. 1.放置UILabel 最简单最笨的方法是在每个textField里放一个UILabel来充当placeholder,当该textField聚焦时,让placeholder的文字会灰色变为白色,失焦后从白色再变回灰色.

iOS开发--QQ音乐练习,歌词的展示,歌词的滚动,歌词的颜色变化

一.歌词的展示 -- 首先歌词是在scrollView上,scrollView的大小是两个屏幕的宽度 scrollView滚动修改透明度的代码                                                             自定义展示歌词的view,继承自UIScrollView,向外界提供一个歌词文件名的属性 /** 歌词文件的名字 */ @property(nonatomic,copy) NSString *lrcFileName; 重写setter,

更改android actionbar tab文字颜色

1 在res/values/colors.xml <color name="text_tab_selected">#000000</color> <color name="text_tab_unselected">#886C2A</color> 2 /res/color 定义文件 tab.xml <?xml version="1.0" encoding="utf-8"?&g

鼠标经过时背景颜色变化

<style type="text/css">#coolmenu{border: 1px solid black;border-bottom-width: 0;width: 170px;background-color: #E6E6E6;}* html #coolmenu{width: 164px;}#coolmenu a{font: bold 13px Verdana;padding: 2px;padding-left: 4px;display: block;width:

jquery : 菜单根据url变颜色

//菜单根据url变颜色$(document).ready(function(){ $('#nav li a').each(function(){ if($($(this))[0].href==String(window.location)) $(this).parent().addClass('on'); });})

Android记住按钮选择颜色变化状态

为以后可以温习自己做过的一些特效例子,同时也没有必要再一次重写代码,特此从项目中收集代码,按钮颜色变化状态如下: 要实现如图效果,首先要编写一个布局xml文件,代码如下: <LinearLayout android:layout_width="match_parent" android:layout_height="50dp" android:background="#ffffff" android:orientation="ho