微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

values-night文件夹仅由系统主题更改而非应用程序主题更改触发

如何解决values-night文件夹仅由系统主题更改而非应用程序主题更改触发

我正在尝试在深色和浅色主题之间实现主题切换。将values文件夹的副本创建到values-night,并分别为暗和亮定义了两种不同的颜色。但是,当按下按钮切换主题时,它不起作用。相反,它适用于Android系统UI主题选择(这意味着如果我从Android设备设置菜单切换主题。)当我从应用程序中单击切换主题时,我想使其正常工作。

以下代码用于切换主题

if (isDarkModeOn) {
    System.out.println("Dark mode is on: so disable it");
    AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
    btnTheme.setText("Enable Dark Mode");
} else {
    System.out.println("Dark mode is off: so enable it");
    AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
    btnTheme.setText("disable Dark Mode");
}
requireActivity().recreate();

应用主题也正确设置为:

<style name="AppTheme" parent="Theme.AppCompat.DayNight"></style>

请提出解决此问题的适当方法。预先感谢。

解决方法

使用样式中的一些全局属性

 <style name="AppTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:windowBackground">@color/background_color</item>
    <item name="android:textColor">@color/textColor</item>
</style>

这是我使用此样式的应用程序,它可以正常工作

,

AppCompatDelegate.setDefaultNightMode(...) 仅适用于 AppCompatActivity(不适用于 Activity 或 FragmentActivity),因此请先检查父 Activity。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。