Android setTheme工作,但仅在从清单加载主题之后
我试图在运行时设置活动的主题,从许多主题中选择一个。我希望在活动启动时立即显示所选主题 在我清单的Android setTheme工作,但仅在从清单加载主题之后,android,themes,android-manifest,Android,Themes,Android Manifest,我试图在运行时设置活动的主题,从许多主题中选择一个。我希望在活动启动时立即显示所选主题 在我清单的部分,我已经用android:theme=“@style/AppTheme”设置了一个默认主题。然后在我的onCreate()中,我使用setTheme(R.style.DarkAppTheme)将主题设置为用户选择的主题(用所选主题替换DarkAppTheme) 根据研究,似乎setTheme()应该在onCreate()之前和setContentView()之前,我就是这样做的 但是,尽管这可以
部分,我已经用android:theme=“@style/AppTheme”
设置了一个默认主题。然后在我的onCreate()
中,我使用setTheme(R.style.DarkAppTheme)
将主题设置为用户选择的主题(用所选主题替换DarkAppTheme
)
根据研究,似乎setTheme()
应该在onCreate()
之前和setContentView()
之前,我就是这样做的
但是,尽管这可以在用户选择的主题中显示活动,但活动首先加载看起来像默认主题的内容,然后在短时间延迟后加载正确的主题
如果我直接在清单中设置用户选择的主题,它会根据我的需要立即加载,当然这是硬编码的,我希望根据共享的首选项动态地更改它
如何避免可见的转换?我希望从一开始就显示用户选择的主题
谢谢。如果您的
活动
加载时间过长,则会出现AndroidManifest
上的主题。您可以尝试从AndroidManifest
加载和删除android:theme=“@style/AppTheme”
,甚至在这两种使用之间设置折衷方案
我希望它能帮助您\o/
活动首先加载看起来像默认主题的内容,然后在短时间延迟后加载正确的主题。。。如何避免可见的转换
当您的应用程序第一次从主屏幕上的图标启动时,“进入/打开”窗口动画有两个部分:
<item name="android:windowDisablePreview">true</item>
true
这将阻止“出现深灰色矩形”动画,并且只允许“显示视图布局”,从而避免可见切换或闪烁。但也有一些警告: