我尝试设置底部导航项的文本颜色。 This guide表示有一个名为setSelectedItemId
的函数以编程方式设置所选项。但它需要25.3.0支持库,我使用25.0.0。所以我使用下面的代码来设置所选项目:
Menu menu = bottomNavigationView.getMenu();
menu.getItem(selectedIndex).setChecked(true);
menu.getItem(currentIndex).setChecked(false);
currentIndex = selectedIndex;
我的颜色设置在这里:
int[] colors = new int[] {
Color.BLACK,
Color.GREEN,
Color.BLUE,
Color.RED
};
int [][] states = new int [][]{
new int[] { android.R.attr.state_enabled, -android.R.attr.state_pressed, -android.R.attr.state_selected}, // enabled
new int[] {-android.R.attr.state_enabled}, // disabled
new int[] {android.R.attr.state_enabled, android.R.attr.state_selected}, // selected
new int[] {android.R.attr.state_enabled, android.R.attr.state_pressed} // pressed
};
bottomNavigationView.setItemTextColor(new ColorStateList(states, colors));
我无法看到所选的文字颜色。当我按下项目时,项目文本颜色为红色。我希望按下后项目文本颜色为蓝色(因为我认为它的状态已被选中。)
答案 0 :(得分:1)
此解决方案对我有用。但是在我的情况下,我仅使用两种颜色。 但基本上
android.R.attr.state_pressed
仅在按下时设置颜色
android.R.attr.state_checked
将在您停止按下按钮后设置颜色。
int[] colors = new int[] {
Color.BLACK,
Color.GREEN,
};
int [][] states = new int [][]{
new int[] { android.R.attr.state_enabled, -android.R.attr.state_checked},
new int[] {android.R.attr.state_enabled, android.R.attr.state_checked}
};
bottomNavigation.setItemTextColor(new ColorStateList(states, colors));
bottomNavigation.setItemIconTintList(new ColorStateList(states, colors));