Я написал код для изменения цвета строки состояния, используя следующий код 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, строка состояния становится зеленой и остается неизменной. Как это сделать?
возможно, это проблема жизненного цикла? например, вы вызываете .setStatusBarColor слишком поздно ... когда можно использовать метод жизненного цикла, который вызывается ранее?
Я думал об этом и перепробовал все методы в жизненном цикле, даже потоки с методом и без него
Вы уверены, что дело не только в том, что панель действий синяя ... и она растягивается под / перекрывает область строки состояния?
да, я очень уверен
Цвет строки состояния появляется в своем естественном цвете, прежде чем он изменится
Это потому, что вы не создаете/используете свой собственный
ToolBar
, вы используете панель инструментов Theme, которая будет иметь цвет темы до тех пор, пока не будет вызван ваш кодwindow.setStatusBarColor(Color.parseColor("#d3d6db")
. ИспользуйтеTheme
, у которого нетToolBar
, и создайте свой собственный, который увеличивается с помощьюsetContentView(..)
— вы можете настроить свойToolbar
черезxml
..звучит как законный ответ
У меня его нет, и я сделал, как вы сказали, ничего не произошло
I do not have one, and I did as you said
— если вы сделали это правильно, то ваша проблема будет решена, так как не нужно будет ничего программно делать с флагами окна, аToolbar
всегда будет иметь только один цвет — цвет, который вы установили — developer.android.com/training/appbar/index.html, также, если вы хотите настроить таргетинг на разные уровни API, просто создайте папкиvalues-vXX
с соответствующими изменениями элементовvalues
по умолчанию.Должен ли я иметь один, чтобы завершить мою работу?
каково значение
@color/colorPrimary
?!! это#d3d6db
?и почему вы не добавляете
<item name="android:statusBarColor">@color/color_primary</item>
потому что <item name="colorPrimaryDark">@color/colorPrimaryDark</item> помогает