While updating my apps to Kitkat, I just wanted to give them a gorgeous look on KitKat using the Translucent property:
Translucent system bars
You can now make the system bars partially translucent with new themes, Theme.Holo.NoActionBar.TranslucentDecor and Theme.Holo.Light.NoActionBar.TranslucentDecor. By enabling translucent system bars, your layout will fill the area behind the system bars, so you must also enable [fitsSystemWindows][4] for the portion of your layout that should not be covered by the system bars.
My only concern is that I would like to use an ActionBar which sounds the opposite of what Google wants (both theme have NoActionBar:
Theme.Holo.NoActionBar.TranslucentDecor
Theme.Holo.Light.NoActionBar.TranslucentDecor
As I don't plan to use some hacks or tricks to make it work, I just wanted to know if there was some correct way to achieve this or if this would be against Google guidelines.
This works with less lines:
Would be great if someone could add, how to check, if the translucent navigation is available at all, because the N10 e.g. will have the translucent navigation disabled with Build.VERSION_CODES.KITKAT. Edit: answered in this question: Check if translucent navigation is available
You can create your own theme with
android.R.attr#windowTranslucentStatus
set totrue
to achieve the same effect without losing theActionBar
.From the docs:
Styles - Remember, these would go in
values-v19
.Layout
Results
This is the answer I was looking for: https://github.com/jgilfelt/SystemBarTint
The code below works well in my App.
Translucent:
Seting not translucent:
All of the answers extend the ActionBar either programmatically or from layout: what this means is that when the app gets launched or recreated the system will look for the theme (which isn't aware of the fix) and show a VERY UGLY status bar coloured with whatever is the window background...!
I have created an example of how to do it using the theme only:
I hope it will be useful for someone :)