Ответ 1
Вы можете сделать это, используя атрибуты. Сначала определите свой атрибут в attrs.xml
(этот файл находится в папке "values" ):
<?xml version="1.0" encoding="utf-8"?>
<resources>
<attr name="myCoolColor" format="color" />
</resources>
Затем в styles.xml
укажите myCoolColor
для каждой темы:
<style name="Theme.MyApp" parent="@style/Theme.Light">
<item name="myCoolColor">#123456</item>
</style>
<style name="Theme.MyApp.Dark" parent="@style/Theme.Dark">
<item name="myCoolColor">#654321</item>
</style>
Теперь укажите myCoolColor
в качестве фона вашего представления:
android:background="?myCoolColor"
Вы можете пойти дальше и использовать ссылку на цвет, чтобы вы могли сохранить свои цвета в одном месте. Измените атрибут, чтобы включить ссылку (обратите внимание, что мы можем использовать цвет ИЛИ ссылку):
<?xml version="1.0" encoding="utf-8"?>
<resources>
<attr name="myCoolColor" format="color|reference" />
</resources>
Измените свой styles.xml
на ссылку цвета для каждой темы:
<style name="Theme.MyApp" parent="@style/Theme.Light">
<item name="myCoolColor">@color/blue</item>
</style>
<style name="Theme.MyApp.Dark" parent="@style/Theme.Dark">
<item name="myCoolColor">@color/green</item>
</style>
Наконец, определите цвета в colors.xml
:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="blue">#0000FF</color>
<color name="green">#00FF00</color>
</resources>
Что это!