我有这个应用程序,我想根据用户的选择动态更新主题。目前,setTheme((仅在应用程序首次加载时有效。关于如何动态设置自定义主题,你有什么策略或技巧可以分享吗?或者了解如何动态更新colorPrimaryVariant颜色。
override fun onCreate(savedInstanceState: Bundle?) {
setTheme(R.style.Theme_CleanNoteApp_Category) // working fine when the app loads
super.onCreate(savedInstanceState)
}
您可以使用这种方法(代码行(在运行时以编程方式更改主题:
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
你可以使用类似的东西:
binding.btnChangeTheme.setOnClickListener{
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
}
我发现了一个窍门。每当用户选择他们想要的主题时,我们都可以使用SharePref存储引用。然后调用recreate((方法来重新启动"活动"生命周期。在onCreate上,只需从用户设置的SharedPref中读取引用,然后调用setTheme(R.style.user_dynamic_theme(。