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

avatar
phoenix
7 апреля 2018 в 22:39
160
2
1

Я написал код для изменения цвета строки состояния, используя следующий код Java:

if (android.os.Build.VERSION.SDK_INT >= 21) {
        Window window = this.getWindow();
        window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
        window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        window.setStatusBarColor(Color.parseColor("#d3d6db"));
    }

И снова через xml следующим образом:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">#d3d6db</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

В обоих случаях при запуске приложения строка состояния становится синей и меняет цвет на выбранный мной. Когда запускается такая программа, как WhatsApp, строка состояния становится зеленой и остается неизменной. Как это сделать?

Источник
Nerdy Bunz
7 апреля 2018 в 22:42
0

возможно, это проблема жизненного цикла? например, вы вызываете .setStatusBarColor слишком поздно ... когда можно использовать метод жизненного цикла, который вызывается ранее?

phoenix
7 апреля 2018 в 22:46
0

Я думал об этом и перепробовал все методы в жизненном цикле, даже потоки с методом и без него

Nerdy Bunz
7 апреля 2018 в 22:49
0

Вы уверены, что дело не только в том, что панель действий синяя ... и она растягивается под / перекрывает область строки состояния?

phoenix
7 апреля 2018 в 22:52
0

да, я очень уверен

phoenix
7 апреля 2018 в 22:55
0

Цвет строки состояния появляется в своем естественном цвете, прежде чем он изменится

Mark
7 апреля 2018 в 23:08
0

Это потому, что вы не создаете/используете свой собственный ToolBar, вы используете панель инструментов Theme, которая будет иметь цвет темы до тех пор, пока не будет вызван ваш код window.setStatusBarColor(Color.parseColor("#d3d6db"). Используйте Theme, у которого нет ToolBar, и создайте свой собственный, который увеличивается с помощью setContentView(..) — вы можете настроить свой Toolbar через xml..

Nerdy Bunz
7 апреля 2018 в 23:21
0

звучит как законный ответ

phoenix
7 апреля 2018 в 23:22
0

У меня его нет, и я сделал, как вы сказали, ничего не произошло

Mark
7 апреля 2018 в 23:26
0

I do not have one, and I did as you said — если вы сделали это правильно, то ваша проблема будет решена, так как не нужно будет ничего программно делать с флагами окна, а Toolbar всегда будет иметь только один цвет — цвет, который вы установили — developer.android.com/training/appbar/index.html, также, если вы хотите настроить таргетинг на разные уровни API, просто создайте папки values-vXX с соответствующими изменениями элементов values по умолчанию.

phoenix
7 апреля 2018 в 23:36
0

Должен ли я иметь один, чтобы завершить мою работу?

Muhammed Refaat
8 апреля 2018 в 06:28
0

каково значение @color/colorPrimary ?!! это #d3d6db?

Muhammed Refaat
8 апреля 2018 в 06:29
0

и почему вы не добавляете <item name="android:statusBarColor">@color/color_primary</item>

phoenix
8 апреля 2018 в 11:29
0

потому что <item name="colorPrimaryDark">@color/colorPrimaryDark</item> помогает

Ответы (2)

avatar
phoenix
8 апреля 2018 в 12:54
0

Я нашел решение Причина кроется в файле манифеста, где он должен содержать

android:minSdkVersion="the minimum version supports changing the status bar color"

Когда выбрана версия, цвет строки состояния будет выбранным при запуске программы

avatar
Cvarier
8 апреля 2018 в 03:58
0

Попробуйте включить

<item name="android:statusBarColor" tools:targetApi="lollipop">@color/your_theme_color</item>

под AppTheme в вашем styles.xml.

Cvarier
8 апреля 2018 в 17:34
0

Нет проблем, я рад, что вы нашли решение.