更改NavigationView侧滑菜单文字颜色

来源:互联网 发布:长春一台网络直播 编辑:程序博客网 时间:2024/05/24 05:29

公司伟大的设计师给了一套设计,如下图,可是默认的文字和图标颜色都是黑的啊,各种网站各种找,就是没有现成的啊,最后还是找到了个方法实现.

设计图:

这里写图片描述

效果图:

这里写图片描述

别对比效果。。。这还没有调整成最终效果呢。

首先是NavigationView里的代码

这里写图片描述

然后看一下Activity里是怎么写的

onCreate 里:

      int[][] states = new int[][]{                new int[]{android.R.attr.state_activated}, // enabled                new int[]{android.R.attr.state_active}, // disabled                new int[]{android.R.attr.state_checked}, // unchecked                new int[]{android.R.attr.state_focused}, // pressed                new int[]{android.R.attr.state_enabled}, // enabled                new int[]{-android.R.attr.state_enabled}, // disabled                new int[]{-android.R.attr.state_checked}, // unchecked                new int[]{android.R.attr.state_pressed}  // pressed        };        int[] colors = new int[]{                Color.WHITE,                Color.YELLOW,                Color.YELLOW,                Color.YELLOW,                Color.WHITE,                Color.WHITE,                Color.YELLOW,                Color.WHITE//              ContextCompat.getColor(this,R.color.colorPrimary),        };        ColorStateList colorStateList = new ColorStateList(states, colors);        mNavigationView.setItemTextColor(colorStateList);        mNavigationView.setItemIconTintList(colorStateList);   

这里面就是将menu里的item各种状态的颜色通过colorStateList进行设置,这通过mNavigationView
的两个方法将文字和对应图标设置颜色

这里边需要注意的是,使用颜色时要直接用Color里的,或者按我最后的方式加入你color.xml里的代码
ContextCompat.getColor(this,your color),

不然的话你直接R.color.white 这种的是不会起作用的,具体为啥我也没研究。


其中黄色是选中色,白色是未选中色。。。(即使不说看图也能看明白)

当然了只是这样写好不够,还要在onNavigationItemSelected 加入这些东西

    @SuppressWarnings("StatementWithEmptyBody")    @Override    public boolean onNavigationItemSelected(MenuItem item) {        int id = item.getItemId();        mDrawer.closeDrawer(GravityCompat.START);        if (id == R.id.nav_bs) {            //你的具体操作        }        Menu menu = mNavigationView.getMenu();        for (int i = 0; i < menu.size(); i++) {            if (menu.getItem(i).isChecked()) {                menu.getItem(i).setChecked(false);                continue;            }        }        item.setChecked(true);        return true;    }

这里就是选中没选中的状态切换了。。。如果有写好的也你也可以用自己的。。。不强求


如果遇到什么问题,或者有什么地方写错的,欢迎大家来指正

0 0
原创粉丝点击