如何根据 Dark/Light 主题更改布局背景图片?

How to change a layout background image depending on Dark/Light theme?

我有两张图片。我想这样做:当用户打开一个带有 Light 主题的应用程序时 - 第一个图像被用作布局的背景。当用户打开带有深色主题的应用程序时 - 第二张图片被用作布局的背景。

要解决这个文本颜色问题,我们可以只使用styles.xmlcolors-day/night.xml 和一行代码:<item name="android:textColor">@color/textColor</item>

我尝试对图像和两个 样式 文件进行同样的操作:<item name="android:background">@drawable/day</item>

但是此功能将背景应用于屏幕上的每个元素,而不仅仅是主要布局。

我知道,我可以通过使用 if 语句和 layout.setBackgroundResource(R.drawable.day/night);

更改背景以编程方式完成此操作

但也许可以像文本颜色那样使用 XML 来完成?

To solve this problem with text colors, we can just use styles.xml and colors-day/night.xml and one line of code: @color/textColor

你需要做同样的事情,但不是 res/values/colors.xml,它应该在 drawable res/drawable/day

上完成

因此,您将在 res 目录中有一个 drawabledrawable-night 文件夹,每个文件夹都应该有一个唯一版本的 day 图像,其中同名。

它们在 Android Studio 中应该看起来像(Android 预览):

并且通常使用属性 name="android:background">@drawable/day</item>