2013-12-14 88 views
21

當我發佈我的筆記應用程序Android 4.0 - 4.3時,我使用了自定義操作欄顏色和自定義操作欄圖標(而不是使用標準的明暗操作欄)。我想在Android 4.4上使用它,狀態欄也將採用我在Action Bar(它是#FFD060)中使用的自定義顏色。有沒有一種方法可以輕鬆更改我當前的styles.xml以允許4.4利用此優勢?利用Android 4.4中的半透明狀態欄KitKat

我在我的價值觀,V19夾styles.xml如下:

<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

回答

16

更新:Matt Gaunt找到這篇大文章(一名Google員工)爲Android應用程序添加半透明主題。這是非常徹底的,並解決了一些問題,很多人似乎同時實施這種風格是具有:Translucent Theme in Android

就以下內容添加到您的自定義樣式。這可以防止ActionBar後面的內容移動到窗口的頂部,但不確定屏幕的底部。

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

信用:Transparent Status Bar System UI on Kit-Kat

+0

另外值得注意的是,從reddit的這種網絡公民對於如何把顏色在狀態欄中很好的解釋。基本上你用你想要的背景顏色將你的基礎佈局包裝在一個FrameLayout中。 http://www.reddit.com/r/Android/comments/1ssgkt/any_android_apps_making_using_of_translucent/ce0y15d – thunsaker

+9

如果您在應用程序中使用Toasts,請參閱https://code.google.com/p/ android/issues/detail?id = 63653 – Paito

+0

謝謝!偉大的文章 –

2

它看起來像所有你需要做的就是這個元素添加到您想在一個半透明的狀態條主題:

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

我以前試過這個我Styles.xml內,我在想,如果有更多的這一點。當我剛剛加入這個,它使我的應用程序的內容向上移動,在狀態欄開始,成爲操作欄隱藏。 下面是一個例子,一旦圖像我實現: [沒有半透明代碼(http://i.imgur.com/3jvQQL4.png)。 [隨着半透明代碼(http://i.imgur.com/XMgiO8h.png)。 – Amonstan

0

你很近,你只需要更新您的視圖背景顏色:

<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全球背景色也會工作,但可能會導致一團糟,因爲它最終會成爲所有事物的默認背景顏色。

+2

但不這樣產生額外的透支? –

2

這些行添加在您的主旋律

<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> 
0

要更改狀態欄的顏色windowBackground

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

爲半透明效果添加到狀態欄和導航欄

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

<item name="android:windowTranslucentNavigation">true</item> 
相關問題