如何自动为Android中的浅色和深色主题显示不同的资源?

时间:2010-12-01 06:05:03

标签: android resources themes

据我所知,Android,Light和Dark有两个内置主题。我希望我的应用程序根据用户使用的主题显示不同的资源(不要让用户在我的应用程序中明确指定主题!)。这可能吗?如果是这样,是否可以通过xml资源进行,或者是否需要编程方法?

注意:是的,我至少读过http://d.android.com/guide/topics/ui/themes.html三次。它似乎只是告诉我怎么做是为我的元素设置一个或多个特定主题,而不是正确显示亮/暗元素。

2 个答案:

答案 0 :(得分:0)

这是一个您可以检查其他可绘制文件夹的网站。

http://developer.android.com/guide/topics/resources/providing-resources.html

此外,本文档可能会有所帮助。 http://developer.android.com/guide/topics/ui/themes.html

对于常规主题:我不知道Android中的任何功能,您可能需要自己开发。

答案 1 :(得分:0)

是的,可以通过XML资源来完成。

来自https://developer.android.com/preview/features/darktheme#themes_and_styles

  

您的主题和样式应避免用于浅色主题的硬编码颜色或图标。您应该改用主题属性(首选)或夜间限定的资源。

是的,有一些资源限定符,请参见https://developer.android.com/guide/topics/resources/providing-resources.html#NightQualifier :后缀nightnotnight

我发现Material theme website可以很好地解释这一点,但最重要的部分是:

  

或者,如果您想为应用定义单独的LightDark主题,则可以继承Theme.MaterialComponents.Light目录中的values和{{1} } Theme.MaterialComponents目录中。例如:

     

res / values / themes.xml

values-night
     

res / values-night / themes.xml

<style name="Theme.MyApp" parent="Theme.MaterialComponents.Light">
    <!-- ... -->
</style>