setTheme只能在从manifest中加载主题后才能工作

drm*_*wer 6 android themes android-manifest

我正在尝试在运行时设置我的Activity的主题,选择一个主题.我希望所选主题在活动启动时立即显示.

<application>我的清单部分,我设置了一个默认主题android:theme="@style/AppTheme".然后在我用onCreate()setTheme(R.style.DarkAppTheme)将主题设置为用户选择的主题(替换DarkAppTheme为选定的主题).

基于研究,似乎setTheme()应该在之前onCreate()和之前进行setContentView(),我这样做.

但是,虽然这可以在用户选择的主题中显示活动,但活动首先加载看起来像默认主题的内容,然后在短暂的延迟后加载正确的主题.

如果我直接在清单中设置用户选择的主题,它会立即加载,但当然这是硬编码的,我想根据共享首选项动态更改它.

如何避免可见的转换?我希望从一开始就显示用户选择的主题.

谢谢.

Uil*_*ias 0

AndroidManifest如果Activity加载时间太长,主题就会出现。您可以尝试调整Activity负载和删除android:theme="@style/AppTheme"负载AndroidManifest,甚至在这两种使用之间设置折衷方案。

希望对你有帮助\o/