zoukankan      html  css  js  c++  java
  • 更改NavigationView侧滑菜单文字颜色

    NavigationView menu默认icon和title会随着菜单状态改变而改变,选择某个菜单后再次打开侧边菜单后会发现该菜单的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

  • 相关阅读:
    Android uiautomator实例使用
    android自动化之MonkeyRunner测试环境配置(一)
    移动平台自动化测试从零开始--MonkeyRunner工具使用_正版电子书在线阅读_百度阅读
    android sdk工具之MonkeyRunner (实例)_小兵兵同学_新浪博客
    数据库~Mysql里的Explain说明
    数据库~Mysql派生表注意的几点~关于百万数据的慢查询问题
    ELK系列~Fluentd对大日志的处理过程~16K
    LindDotNetCore~ISoftDelete软删除接口
    DotNetCore跨平台~认识环境和环境变量
    Oracle V$SQLAREA
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/9089057.html
Copyright © 2011-2022 走看看