I want to implement a switch for toggling dark mode in my application. After investigating multiple sources on how to do this correctly, I came across this one-line solution:
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
Unfortunately, in my case this only changes the configuration to light mode and doesn't update UI colors. Here's my code:
binding.toggleDarkMode.setOnCheckedChangeListener { _, isChecked ->
if (isChecked) {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
activity?.recreate()
}
}
I'd also like to mention that I have separate theme files for light and dark mode. Light theme extends Theme.Material3.Light.NoActionBar
and dark theme extends Theme.Material3.Dark.NoActionBar
. Could anyone tell me what could be the problem?
So basically my phone's OS was overriding my app's styles on a MUI device. Here's the complete answer: Can't disable Night Mode in my application even with values-night