据我所知,Android,Light和Dark有两个内置主题。我希望我的应用程序根据用户使用的主题显示不同的资源(不要让用户在我的应用程序中明确指定主题!)。这可能吗?如果是这样,是否可以通过xml资源进行,或者是否需要编程方法?
注意:是的,我至少读过http://d.android.com/guide/topics/ui/themes.html三次。它似乎只是告诉我怎么做是为我的元素设置一个或多个特定主题,而不是正确显示亮/暗元素。
答案 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
:后缀night
和notnight
。
我发现Material theme website可以很好地解释这一点,但最重要的部分是:
或者,如果您想为应用定义单独的
Light
和Dark
主题,则可以继承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>