抱歉我的英文。
我需要动态设置NavigationView的项目文本和项目图标颜色,但由于某种原因这不起作用。
这将是一个错误或我做错了什么? XML工作得很好,但是当我做以下事情时,不是:
我的代码:
navigationView = (NavigationView) findViewById(R.id.nav_view);
int[][] states = new int[][] {
new int[] { }, // default
new int[] { android.R.attr.state_focused, android.R.attr.state_pressed }, // pressed
new int[] { android.R.attr.state_selected } // selected
};
int[] colors = new int[] {
colorDefault,
colorFocused,
colorSelected
};
ColorStateList myList = new ColorStateList(states, colors);
navigationView.setItemTextColor(myList);
navigationView.setItemIconTintList(myList);
出于某种原因,我只得到第一种颜色:(
答案 0 :(得分:1)
int[][] states = new int[][] {
new int[] { android.R.attr.state_selected } // selected
new int[] { } // default
};
int[] colors = new int[] {
colorSelected,
colorDefault
};
ColorStateList colorList = new ColorStateList(states, colors);
navigationView.setItemTextColor(colorList);
仅使用选择的内容和导航文本状态的默认值。正如Matei说的。您需要按照最具体的情况使用。
答案 1 :(得分:0)
它就像捕捉异常一样:你需要从最具体的案例开始,然后再考虑更一般的案例。在你的情况下,它将是:
int[][] states = new int[][] {
new int[] { android.R.attr.state_selected } // selected
new int[] { android.R.attr.state_focused, android.R.attr.state_pressed }, // pressed
new int[] { }, // default
};
int[] colors = new int[] {
colorSelected,
colorFocused,
colorDefault
};
这对你有用吗?