如何根据 Dark/Light 主题更改布局背景图片?
How to change a layout background image depending on Dark/Light theme?
我有两张图片。我想这样做:当用户打开一个带有 Light 主题的应用程序时 - 第一个图像被用作布局的背景。当用户打开带有深色主题的应用程序时 - 第二张图片被用作布局的背景。
要解决这个文本颜色问题,我们可以只使用styles.xml和colors-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
目录中有一个 drawable
和 drawable-night
文件夹,每个文件夹都应该有一个唯一版本的 day
图像,其中同名。
它们在 Android Studio 中应该看起来像(Android 预览):
并且通常使用属性 name="android:background">@drawable/day</item>
我有两张图片。我想这样做:当用户打开一个带有 Light 主题的应用程序时 - 第一个图像被用作布局的背景。当用户打开带有深色主题的应用程序时 - 第二张图片被用作布局的背景。
要解决这个文本颜色问题,我们可以只使用styles.xml和colors-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
目录中有一个 drawable
和 drawable-night
文件夹,每个文件夹都应该有一个唯一版本的 day
图像,其中同名。
它们在 Android Studio 中应该看起来像(Android 预览):
并且通常使用属性 name="android:background">@drawable/day</item>