I've set a default theme for the whole app. It's defined in styles.xml as follows:
<style name="DefaultTheme" parent="@android:style/Theme.Holo.Light">
<!-- Customization here -->
</style>
I've also defined a dark theme:
<style name="DarkTheme" parent="@android:style/Theme.Holo">
<!-- Customization here -->
</style>
In the manifest it is declared the light theme as the main theme for the app:
<application
...
android:theme="@style/DefaultTheme" >
Now this is working fine, but in an activity, I need to set a different theme for a single Layout. Something like this:
+--------------------------------------------------+
| Parent Linear layout (default theme) |
| |
| +------------------------------------+ +-------+ |
| | | | | |
| | Left linear layout | | | |
| | (default theme) | | | |
| | | | | |
| | | | | |
| | | | ·<----------- Right Linear Layout
| | | | | | (Need it in dark theme)
| | | | | |
| | | | | |
| +------------------------------------+ +-------+ |
+--------------------------------------------------+
In the layout xml file I'm trying to set a theme for the rightmost child LinearLayout:
<LinearLayout
style="@style/DarkTheme">
...
I'd expect this to work just fine, and to apply the dark theme to the right layout only (and its child views), but it is not working. I've tried replacing the @style with a built-in @android:style to no avail. I've tested this in the layout editor and on real device/simulator.
Is it possible to apply a custom theme or style to a single layout?
This is now possible by using the android:theme
property on the view and setting it to any theme you like. Note that the child views will inherit the theme of their parent.