答案 0 :(得分:5)
您可以使用以下功能动态更改导航颜色。基本上,它检查给定的NavigationBar背景色是浅色还是深色,并为按钮设置适当的主题。无法为按钮设置特定的颜色。
private void setNavigationBarButtonsColor(Activity activity, int navigationBarColor) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
View decorView = activity.getWindow().getDecorView();
int flags = decorView.getSystemUiVisibility();
if (isColorLight(navigationBarColor)) {
flags |= View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR;
} else {
flags &= ~View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR;
}
decorView.setSystemUiVisibility(flags);
}
}
private boolean isColorLight(int color) {
double darkness = 1 - (0.299 * Color.red(color) + 0.587 * Color.green(color) + 0.114 * Color.blue(color)) / 255;
return darkness < 0.5;
}