Вы можете сделать это, используя атрибуты. Сначала определите свой атрибут в 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>
Вот и все!