我想在我的应用中使用“更改主题”功能。如果我在onCreate()中调用setTheme(),则会出现一个问题。
我启动应用程序后的那一刻,一个纯白色的背景出现了一秒钟(因为我在清单中设置了浅色主题)。之后,将显示我的活动的完整布局 - 根据用户的主题偏好,它可以是白色或黑色背景。
有什么方法可以改变发射后是否出现白色或黑色背景?
答案 0 :(得分:9)
请务必在致电setTheme()
之前致电onCreate()
中的setContentView()
。然后,如果您想稍后再次动态更改主题,则只需重新启动活动即可。
答案 1 :(得分:1)
如果要为整个程序添加主题,请执行以下操作:
在您的清单中,您将添加到您正在使用主题的应用程序标记。
<application android:theme="@style/mythemename">
然后查看 Theme XML 以确保您在适当的位置声明了所需的内容。
如果只是针对特定操作,您可以添加活动代码
<activity android:theme="@android:style/Theme.propertyname">
您还可以,如果您希望主题只更改背景颜色,请使用活动或应用程序标记(您正在使用的任何一个)使用相同的模式,并将项目名称“colorbackground”设置为您想要的。
您还可以使用 Theme XML 并在当前主题中重新制作所需内容,并使用上述方法调用您的自定义主题。
我希望这会有所帮助,如果没有,请告诉我,以便我将来能够提供更好的帮助。
答案 2 :(得分:0)
另一种方法是使用一种启动画面,例如检查偏好变量,然后决定是使用浅色还是暗色主题。这样您也可以使用XML布局。
编辑:另一种方法是让所有布局在onCreate()方法中定义东西,然后在准备就绪时触发onStart()方法。