2013-12-14 19 views
21

Quando ho rilasciato la mia nota prendendo l'applicazione per Android 4.0 - 4.3 Ho usato un colore personalizzato della barra delle azioni con un'icona personalizzata della barra delle azioni (invece di usare le normali barre di azione chiare e scure). Mi piacerebbe farlo su Android 4.4, la barra di stato assumerà anche il colore personalizzato che sto usando nella mia barra delle azioni (che è # FFD060). C'è un modo per cambiare facilmente il mio styles.xml corrente per consentire a 4.4 di approfittare di questo?Approfittando della barra di stato traslucida in Android 4.4 KitKat

mio styles.xml sotto la mia cartella di valori-V19 è il seguente:

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

ho cercato di attuare:

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

fa sì che il contenuto della mia domanda di spostarsi verso l'alto, inizio nell'area della barra di stato ed essere coperto dalla barra delle azioni.

Without the translucent code

risposta

16

Aggiornamento: trovato questo ottimo articolo da Matt Gaunt (un dipendente Google) sull'aggiunta di un tema traslucido alle app Android. È molto approfondito e affronta alcuni dei problemi che molte persone sembrano avere durante l'implementazione di questo stile: Translucent Theme in Android

Basta aggiungere quanto segue al tuo stile personalizzato. Ciò impedisce lo spostamento del contenuto dietro l'ActionBar e fino alla parte superiore della finestra, non essendo sicuro della parte inferiore dello schermo.

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

credito: Transparent Status Bar System UI on Kit-Kat

+0

Inoltre, questo gentile cittadino di internet di Reddit ha una grande spiegazione su come inserire il colore nella barra di stato. Fondamentalmente si avvolge il layout di base in un FrameLayout con il colore di sfondo che si desidera. http://www.reddit.com/r/Android/comments/1ssgkt/any_android_apps_making_using_of_translucent/ce0y15d – thunsaker

+9

Questo è un po 'pericoloso se usi Toasts nella tua app, vedi https://code.google.com/p/ android/problemi/dettagli? id = 63653 – Paito

+0

Grazie! GRANDE articolo –

2

Sembra che tutto quello che dovete fare è aggiungere questo elemento per i temi che si desidera una barra di stato traslucido su:

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

Ho già provato questo nel mio Styles.xml, e mi chiedevo se c'è un po 'di più ad esso. Quando aggiungo questo, il contenuto delle mie applicazioni si sposta e si avvia nella barra di stato e viene nascosto dalla barra delle azioni. Ecco un'immagine di esempio, una volta implementata: [Senza il codice traslucido] (http://i.imgur.com/3jvQQL4.png). [Con il codice traslucido] (http://i.imgur.com/XMgiO8h.png). – Amonstan

0

Sei molto vicino hai solo bisogno di aggiornare i colori di sfondo vista:

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

Specifica di un colore di sfondo globale nel vostro AppBaseTheme sarebbe anche funziona ma probabilmente causerebbe un disastro poiché finirebbe per essere il colore di sfondo predefinito per tutto.

+2

Ma questo non produce un ulteriore prelievo? –

2

Aggiungere queste righe nel vostro tema principale

<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

Per cambiare il colore della barra di stato per windowBackground

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

Per aggiungere l'effetto traslucido di stato e di navigazione bar

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

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