在不扩展 AppCompatActivity 的情况下更改 Compose Light/Dark XML 主题

Changing Compose Light/Dark XML theme without extending AppCompatActivity

如果用户决定覆盖其 OS 级别设置并从 colors 中读取值,我想以编程方式更改 Compose 中用户设置的 light/dark 主题和 night/colors 个文件。

Jetpack compose 默认情况下会扩展 ComponentActivity,因为扩展 AppCompatActivity 会扩展 FragmentActivity,这在执行仅 Compose 应用程序时不需要。

当我扩展 ComponentActivity 时,更改 light/dark 模式的 AppCompatDelegate 方法不再起作用,因为我没有扩展 AppCompatActivity

例如AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)

如果我改为扩展 AppCompatActivity,它会像您期望的那样工作。

当我不需要时扩展 AppCompatActivity 似乎很愚蠢,但我找不到任何其他方法来告诉撰写应用程序使用基于用户的正确 xml 值输入?

我是不是遗漏了什么,或者这个功能还不存在,我需要扩展 AppCompatActivity

Compose 具有我可以更改的编程主题,但我想使用 XML 颜色文件。

如果你想使用 AppCompat 中的任何 API,你需要扩展 AppCompatActivity,包括使用 XML 颜色文件更改 light/dark 模式主题,通过 AppCompatDelegate APIs.