Как изменить цвет панели навигации системы

В руководствах Android 5.0 панель навигации кажется настраиваемой: http://www.google.com/design/spec/layout/structure.html#structure-system-bars

Как изменить цвет панели навигации? Я хотел бы использовать белый стиль.

Скриншоты: enter image description hereenter image description hereenter image description hereenter 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>