在Android应用中实现更改黑/亮主题功能

时间:2010-08-31 18:31:42

标签: android

我想在我的应用中使用“更改主题”功能。如果我在onCreate()中调用setTheme(),则会出现一个问题。

我启动应用程序后的那一刻,一个纯白色的背景出现了一秒钟(因为我在清单中设置了浅色主题)。之后,将显示我的活动的完整布局 - 根据用户的主题偏好,它可以是白色或黑色背景。

有什么方法可以改变发射后是否出现白色或黑色背景?

3 个答案:

答案 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()方法。