Это отличный ответ для начинающих

у, чтобы строка состояния была полупрозрачной, а панель навигации - другим цветом, а не синим или белым

Мой код

 <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:statusBarColor">@android:color/transparent</item>
        <item name="android:navigationBarColor">@color/colorPrimary</item>
    </style>

Деятельность

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            Window w = getWindow();
            w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
        } 

строка состояния полупрозрачная, но панель навигации не меняет цвет. Почему ?

Панель навигации

 Lokesh Desai24 дек. 2017 г., 12:10
Каков уровень вашего приложения?
 mr.klood424 дек. 2017 г., 12:13
API уровня 24 только

Ответы на вопрос(3)

Ответ это определенно поможет вам получить результат.

Вы можете достичь этого двумя способами - используястиль или жеДеятельность.

Значения-V21 / style.xml

<item name="android:navigationBarColor">@color/navigationbar_color</item>

Использование библиотеки Compat в Activity-

if (Build.VERSION.SDK_INT >= 21) {
    getWindow().setNavigationBarColor(ContextCompat.getColor(this, R.color.primary));
}

FLAG_LAYOUT_NO_LIMITS" вhttps://developer.android.com/reference/android/view/WindowManager.LayoutParams.html [Флаг окна: разрешить расширению окна за пределы экрана] использование такого флага выталкивает из окна как строку состояния, так и панель навигации. Фактически используя ваш файл style.xml и добавив строку

<color name="myWindowBackground">#D7DEB5</color> 

Чтобы изменить фон окна белого цвета, можно отметить как символы строки состояния, так и символы панели навигации, но не их панели. Кроме того, используя следующий код:

int statusBarColor = w.getStatusBarColor();
String hexStatusBarColor = String.format("#%08X", (0xFFFFFFFF & statusBarColor));
int navigationBarColor = w.getNavigationBarColor();
String hexNavigationBarColor = String.format("#%08X", (0xFFFFFFFF & navigationBarColor));
Log.d("FLAGS", "statusBarColor: " + hexStatusBarColor + " -- navigationBarColor: " + hexNavigationBarColor);

Вы видите, что statusBarColor ("# 00000000" полностью прозрачный) и navigationBarColor правильно установлены, но не отображаются с тех пор из окна.

Теперь, не используя флаг «FLAG_LAYOUT_NO_LIMITS», вы получаете прозрачную строку состояния (того же цвета, что и у windowBackground), а также желаемый цвет навигационной панели, но не уверены, что еще код пытается получить с помощью этого флага.

 Rajamohan S25 мая 2018 г., 01:47
Это отличный ответ для начинающих

Значения-V21 / style.xml

<item name="android:navigationBarColor">@color/blue_color</item>

Programatically:

if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    getWindow().setNavigationBarColor(ContextCompat.getColor(this, R.color.primary));
}
 mr.klood424 дек. 2017 г., 12:42
это сработало, но если добавить этот код для изменения полупрозрачной строки состояния w.setFlags (WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); не изменилась цветовая панель навигации
 Lokesh Desai24 дек. 2017 г., 12:44
означает, что если вы установите полупрозрачную строку состояния, то цвет панели навигации не изменится?
 mr.klood424 дек. 2017 г., 12:47
да это проблема sad
 Lokesh Desai24 дек. 2017 г., 12:50
if (Build.VERSION.SDK_INT> = Build.VERSION_CODES.LOLLIPOP) {Window w = getWindow (); w.setFlags (WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); } поместите это в метод onCreate вашей деятельности перед setContentView (), надеюсь, это сработает для вас

Ваш ответ на вопрос