Как изменить цвет панели навигации системы
В руководствах Android 5.0 панель навигации кажется настраиваемой:
http://www.google.com/design/spec/layout/structure.html#structure-system-bars
Как изменить цвет панели навигации?
Я хотел бы использовать белый стиль.
Скриншоты:
![enter image description here]()
![enter image description here]()
![enter image description here]()
![enter image description here]()
Изменить: в моих ресурсах я тестировал стиль:
<item name="android:navigationBarColor" tools:targetApi="21">@android:color/white</item>
Но кнопки белые. Мне нужен тот же рендерер, что и второе изображение.
![enter image description here]()
Ответы
Ответ 1
Начиная с API 27, теперь можно использовать легкий стиль навигационной панели:
<item name="android:navigationBarColor">@android:color/white</item>
<item name="android:windowLightNavigationBar">true</item>
Из документации:
windowLightNavigationBar
Если установлено, панель навигации будет отображаться так, чтобы она была совместима с фоном светлой панели навигации.
Чтобы это вступило в силу, окно должно рисовать фоны системной панели с помощью windowDrawsSystemBarBackgrounds, и панель навигации не должна запрашивать прозрачность с помощью windowTranslucentNavigation. Соответствует настройке SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR в представлении декора.
Ответ 2
Используйте это в своей Деятельности.
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getWindow().setNavigationBarColor(getResources().getColor(R.color.green));
}
Ответ 3
панель навигации не должна быть окрашена
Когда вы настраиваете панели навигации и состояния, сделайте их прозрачными или измените только строку состояния. Во всех остальных случаях панель навигации должна оставаться черной.
(источник https://developer.android.com/training/material/theme.html)
НО, вы можете использовать эту библиотеку для достижения того, чего хотите:) https://github.com/jgilfelt/SystemBarTint
Ответ 4
добавьте этот linle в ваш v21/style
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:navigationBarColor">@color/colorPrimaryDark</item>
</style>
Ответ 5
Вы также можете программно настроить навигационную панель системы освещения в API 26:
View.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
Где View
coluld будет findViewById(android.R.id.content)
.
Однако помните, что:
Чтобы это вступило в силу, окно должно запросить FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS
но не FLAG_TRANSLUCENT_NAVIGATION
.
Смотрите документацию.
Ответ 6
используйте эту простую строку, чтобы изменить цвет панели навигации в соответствии с цветом фона вашего экрана
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getWindow().setNavigationBarColor(ContextCompat.getColor(this, R.color.any_color));
}
иначе вы можете использовать легкий стиль для панели навигации
<item name="android:navigationBarColor">@android:color/white</item>