Использование прозрачной строки состояния в Android 4.4 KitKat

Когда я выпустил приложение для заметок для Android 4.0 - 4.3, я использовал собственный цвет панели действий с помощью значка пользовательской панели действий (вместо использования стандартных световых и темных полос действия). Я хотел бы сделать это на Android 4.4, строка состояния также примет пользовательский цвет, который я использую в своей панели действий (которая есть # FFD060). Есть ли способ легко изменить мой текущий styles.xml, чтобы позволить 4.4 воспользоваться этим?

Мои styles.xml в папке моих значений-v19 выглядит следующим образом:

<resources>

<style name="AppBaseTheme" parent="@android:style/Theme.Holo.Light">
   <item name="android:actionBarStyle">@style/MyActionBarTheme</item>
</style>

 <style name="MyActionBarTheme" parent="@android:style/Widget.Holo.Light.ActionBar">
     <item name="android:background">#ffd060</item>
     <item name="android:textColor">#fff</item>   
     <item name="android:icon">@drawable/action</item>
     <item name="android:titleTextStyle">@style/MyTextAppearance</item>
 </style>

 <style name="MyTextAppearance" parent="android:TextAppearance.Holo.Widget.ActionBar.Title">
     <item name="android:icon">@drawable/action</item>
     <item name="android:textColor">#ffffff</item>
 </style>
</resources>

Я попытался реализовать:

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

Это приводит к тому, что содержимое моего приложения перемещается вверх, начинается в области строки состояния и покрывается панелью действий.

Without the translucent code

Ответ 1

Обновление: Нашел эту замечательную статью из Matt Gaunt (сотрудник Google) по добавлению прозрачной темы в Приложения для Android. Он очень тщательный и затрагивает некоторые проблемы, с которыми многие люди сталкиваются при реализации этого стиля: Прозрачная тема в Android

Просто добавьте следующее в свой собственный стиль. Это предотвращает смещение содержимого позади ActionBar и вплоть до верхней части окна, но не уверен в нижней части экрана.

<item name="android:fitsSystemWindows">true</item>

Кредит: Пользовательский интерфейс панели прозрачных элементов состояния Kit-Kat

Ответ 2

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

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

Ответ 3

Добавьте эти строки в свою основную тему

<style name="AppTheme" parent="android:Theme.Holo.Light">
    <item name="android:windowTranslucentStatus">true</item>
    <item name="android:windowTranslucentNavigation">true</item>
    <item name="android:fitsSystemWindows">true</item>
</style>

Ответ 4

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

<FrameLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ffd060" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/background_light"

        <!-- your stuff here -->
    </LinearLayout>
</FrameLayout>

Задание глобального фонового цвета в вашем AppBaseTheme также будет работать, но, скорее всего, вызовет беспорядок, поскольку в конечном итоге это будет цвет фона по умолчанию для всего.

Ответ 5

Чтобы изменить цвет строки состояния на windowBackground

 <item name="android:windowBackground">@color/window_bg</item>

Чтобы добавить прозрачный эффект к статусу и панели навигации

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

<item name="android:windowTranslucentNavigation">true</item>