【问题标题】:Implement change black/light theme feature in Android app在 Android 应用中实现更改黑/亮主题功能
【发布时间】:2010-08-31 18:31:42
【问题描述】:

我想在我的应用程序中添加“更改主题”功能。如果我在 onCreate() 中调用 setTheme(),就会有一个问题。

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

有什么方法可以改变启动后是白色还是黑色背景?

【问题讨论】:

  • 应用调用主题还是on create的activity?我不知道没有任何代码,但听起来它没有放在应用程序标签中?
  • 主题在清单中设置。但即使我没有在清单中手动设置它,它也会使用默认主题。在 manifest 中设置默认主题等同于在 manifest 中不设置任何主题。

标签: android


【解决方案1】:

在调用setContentView() 之前,请确保在onCreate() 中调用setTheme()。然后,如果您想稍后再次动态更改主题,您应该简单地重新启动您的活动。

【讨论】:

  • 当我这样做时,我仍然会在瞬间看到默认主题。
【解决方案2】:

如果您要向整个程序添加主题,则可以先这样做:

在您的清单中,您将使用主题添加到您的应用程序标签中。

<application android:theme="@style/mythemename">

然后查看 Theme XML 以确保您在适当的地方声明了您需要的内容。

如果只是针对特定操作,您可以添加活动标签

<activity android:theme="@android:style/Theme.propertyname"> 

如果您希望主题仅更改背景颜色,您也可以使用活动或应用程序标签(无论您使用什么标签)遵循相同的模式,并将项目名称“colorbackground”设置为您想要的.

您还可以使用 Theme XML 并在当前主题中重新制作您想要的内容,并使用上述方法将其称为您的自定义主题。

我希望这会有所帮助,如果没有,请告诉我,以便我将来能够提供更好的帮助。

【讨论】:

    【解决方案3】:

    另一种方法是使用一种启动屏幕,例如检查首选项变量,然后决定是使用浅色主题还是深色主题。这样你也可以使用 XML 布局。

    编辑:另一种方法是在 onCreate() 方法中定义所有布局,然后在准备好时触发 onStart() 方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-12
      • 1970-01-01
      • 2017-06-22
      • 1970-01-01
      • 1970-01-01
      • 2020-09-06
      • 1970-01-01
      • 2022-11-11
      相关资源
      最近更新 更多