- No root access needed
- No extra applications needed
- No changing themes needed
- Change is persistent after reboot.
Relevant settings are under global/navigationbar_current_color and global/navigationbar_color.
For example by running this you'll get a dark shade:
adb shell settings put global navigationbar_color -317057255 adb shell settings put global navigationbar_current_color -317057255 adb shell settings put global navigationbar_use_theme_default 0
Pay attention to minus sign if result of calculation is negative, it is significant.
To pick colors easily and calculate their values automatically you can use the color picker
• Opaque black: -16777216
• Transparent black: 65793 (this is not true black - rgb (0,0,0), but almost black - rgb (1,1,1)-)
• Transparent gray: 8421504
You can use the color picker linked above to calculate values for arbitrary colors of your choice.
• Don't use transparent colors if you don't want navigation bar color to change with different apps (ex. keyboard)
• Some applications may set custom colors for navigation bar. This setting only changes default color of the bar, it doesn't override application specific colors.
• Fully transparent navigation bar is not possible except few builtin applications (eg. Gallery or app switcher). You can specify transparency but it just specifies how the nav. bar. color will render on top of the applications color, it doesn't mean the application will render under the navigation bar
• For some reason fully transparent true black shows up as opaque white in most applications. Workaround is using almost black colors instead of true black.
Details for manually calculating values:
Value format is ARGB hex color code converted to signed decimal. (Thanks Acoustichayes for pointing it out.)
1. Pick a color and find out its RGB hex code using a color picker (such as http://htmlcolorcodes.com/). For example you should get.
2. If you want transparency you must prepend transparency value to the color value. 00 is fully transparent, ff is fully opaque, inbetween are varying degrees of transparency.
3. Convert this value to decimal
4. If the resulting value is larger than 2147483647, subtract 4294967296 from it.
1. Hex value of desired color is #4826bf
2. We want 10% transparency, thus using e6 as the hex value for transparency. Prepend to color value and the number becomes e64826bf
3. Convert to decimal: 3863488191
4. 3863488191 is greater than 2147483647 (max signed int), thus our value wraps and become
3863488191 - 4294967296 = -431479105
adb shell settings put global navigationbar_color -431479105 adb shell settings put global navigationbar_current_color -431479105