0

我有两张图片。我想这样做:当用户打开具有 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 来完成,就像文本颜色一样?

4

1 回答 1

0

要使用文本颜色解决这个问题,我们可以使用 styles.xml 和 colors-day/night.xml 以及一行代码:@color/textColor

您需要做同样的事情,但res/values/colors.xml应该在可绘制对象上完成而不是res/drawable/day

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

它们在 Android Studio(Android 预览版)中应该是这样的:

在此处输入图像描述

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

于 2021-11-19T21:13:09.537 回答