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

最新文章

  1. jvm系列(六):jvm调优-从eclipse开始
  2. UI基础之UITableViewController相关
  3. Markdown 语法说明
  4. Hibernate和Mybatis的对比
  5. EF联合查询的新用法
  6. C#实现自动升级(附源码)
  7. linux root不能用
  8. VB.NET 小程序 2
  9. JavaScript DOM高级程序设计 5动态修改样式和层叠样式表1(源代码)--我要坚持到底!
  10. P1832 A+B Problem(再升级)
  11. DEDECMS 猜你喜欢
  12. Markdown简易语法说明
  13. python3之运算符
  14. google gflag使用方法举例
  15. Android项目开发填坑记-Fragment的onAttach
  16. Dubbo-Zookeeper安装
  17. Scala详解
  18. [OpenCV] Samples 18: Load image and check its attributes
  19. [UE4]UI之间传递数据
  20. linux磁盘 分区 物理卷 卷组 逻辑卷 文件系统加载点操作案例

热门文章

  1. 【HDOJ5955】Guessing the Dice Roll(概率DP,AC自动机,高斯消元)
  2. 跳蚤 BZOJ 4310
  3. hdu 5288 ZCC loves straight flush
  4. 省赛i题/求1~n内所有数对(x,y),满足最大公约数是质数的对数
  5. LightOJ1234 Harmonic Number 调和级数求和
  6. T1008 选数 codevs
  7. 基于R-Tree的最近邻查询
  8. Java线程池 ExecutorService
  9. 增强版的RecycleViewAdapter,能够直接使用
  10. iOS知识点全梳理-b