public static void ApplyTheme(this AppCompatActivity activity) { var settings = ResourceLocator.ObtainScope().Resolve <ISettings>(); var theme = settings.AppTheme; CurrentTheme = theme; // Base if ((theme & AppTheme.Dark) == AppTheme.Dark) { activity.SetTheme(Resource.Style.AoTracker_Dark); activity.Window.SetStatusBarColor(DarkBackgroundColour); } else if ((theme & AppTheme.Black) == AppTheme.Black) { activity.SetTheme(Resource.Style.AoTracker_Black); activity.Window.SetStatusBarColor(Color.Black); } else { activity.SetTheme(Resource.Style.AoTracker_Light); } // Colour scheme if ((theme & AppTheme.Orange) == AppTheme.Orange) { activity.Theme.ApplyStyle(Resource.Style.ColourSchemeOrange, true); } else if ((theme & AppTheme.Lime) == AppTheme.Lime) { activity.Theme.ApplyStyle(Resource.Style.ColourSchemeLime, true); } else if ((theme & AppTheme.Cyan) == AppTheme.Cyan) { activity.Theme.ApplyStyle(Resource.Style.ColourSchemeCyan, true); } else if ((theme & AppTheme.Purple) == AppTheme.Purple) { activity.Theme.ApplyStyle(Resource.Style.ColourSchemePurple, true); } else if ((theme & AppTheme.SkyBlue) == AppTheme.SkyBlue) { activity.Theme.ApplyStyle(Resource.Style.ColourSchemeSkyBlue, true); } else if ((theme & AppTheme.Red) == AppTheme.Red) { activity.Theme.ApplyStyle(Resource.Style.ColourSchemeRed, true); } else if ((theme & AppTheme.Pink) == AppTheme.Pink) { activity.Theme.ApplyStyle(Resource.Style.ColourSchemePink, true); } // Toolbar overrides if ((theme & AppTheme.Dark) == AppTheme.Dark) { activity.Theme.ApplyStyle(Resource.Style.ColourSchemeToolbarDark, true); } else if ((theme & AppTheme.Black) == AppTheme.Black) { activity.Theme.ApplyStyle(Resource.Style.ColourSchemeToolbarBlack, true); } if (Build.VERSION.SdkInt >= BuildVersionCodes.M) { RedColour = activity.Resources.GetColor(Resource.Color.RedColour, activity.Theme); LimeColour = activity.Resources.GetColor(Resource.Color.LimeColour, activity.Theme); } else { #pragma warning disable 618 RedColour = activity.Resources.GetColor(Resource.Color.RedColour); LimeColour = activity.Resources.GetColor(Resource.Color.LimeColour); #pragma warning restore 618 } // Colour settings AccentColour = ResolveColour(activity, Resource.Attribute.AccentColour); TextColour = ResolveColour(activity, Resource.Attribute.TextColour); TextInvertedColour = ResolveColour(activity, Resource.Attribute.TextInvertedColour); ToolbarTextColour = ResolveColour(activity, Resource.Attribute.ToolbarTextColour); }