Skip to content Skip to sidebar Skip to footer

Change Activity Theme Deppending On Fragment In Use Android

I have an activity that switches between several fragments. This activity has a default style, but when i change to some particular fragments i want it to change the style. I've do

Solution 1:

Technically speaking: no.

You can not change the current theme if the Activity has been created.

This code only works if the activity is restarted (eg: if i rotate the device it updates to the new style as i want). I think that it is not possible to switch between styles witout recreating an activity or am i wrong?

As rotating includes a recreation of the activity, this is the reason on why is "working".

But… there is one application called Pocket (also Press and Firefox if I remember correctly) that does this in a clever way.

How to do it?

Basically the trick lies in this formula:

Base Color1 + MiddleColor= Theme Color 1

Base Color2 + MiddleColor= Theme Color 2

Keep in mind that Middle Color is the same. For the base color you have to put it to the Window holding your app instance, something like this:

getWindow().setBackgroundDrawable(new ColorDrawable(isLight ? Color.WHITE : Color.BLACK));

Therefore when is combined with an intermediate color, gives you two different themes.

Here you can see how you can do it (it explains the concept very well):

http://sriramramani.wordpress.com/2012/12/06/runtime-theme-change/

EDIT 1:

Added more explanations to the link posts

Post a Comment for "Change Activity Theme Deppending On Fragment In Use Android"