Не работает прозрачность строки состояния

Я пытаюсь сделать строку состояния прозрачной в своем приложении, используя этот код:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
getWindow().setStatusBarColor(Color.TRANSPARENT);

Но это не работает. Строка состояния просто поменяла цвет и стала серой, а не прозрачной. Где моя ошибка? Как сделать строку состояния прозрачной?


person BArtWell    schedule 26.10.2015    source источник
comment
Возможно, вы можете проверить один из моих предыдущих ответов: stackoverflow.com/a/33986302/3426717   -  person Andrei    schedule 29.11.2015


Ответы (2)


Попробуйте это в своем styles.xml(v21)

<name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:windowTranslucentStatus">true</item>

Обновить

Вы можете добиться того же эффекта программно на KitKat, а затем, установив этот флаг окна

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            Window w = getWindow(); // in Activity's onCreate() for instance
            w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
        }

Если вы установите фоновый ресурс (например, цвет или изображение) для своего макета, вы увидите цвет или изображение «под» строкой состояния.

<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@color/primary_dark</item>

Источник

person Ismael Di Vita    schedule 26.10.2015
comment
Тесты проводятся на устройствах +19? Каков конечный результат использования этого решения? - person Ismael Di Vita; 26.10.2015
comment
Да, Nexus 5 с Android 5.1.1. Строка состояния стала серой, но не прозрачной. - person BArtWell; 26.10.2015
comment
С getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); работает. Благодарю вас! - person BArtWell; 26.10.2015
comment
По какой причине эти флаги не работают? Любые идеи? - person stdout; 03.08.2016

попробуйте вызвать это из onCreate:

getWindow().getDecorView().setSystemUiVisibility(
    View.SYSTEM_UI_FLAG_LAYOUT_STABLE
    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);

getWindow().setStatusBarColor(Color.TRANSPARENT);
person prat    schedule 26.10.2015
comment
Тот же результат: строка состояния стала серой, но не прозрачной. - person BArtWell; 26.10.2015