Как указать Android индивидуальные цветовые ресурсы: день / ночь / высокая контрастность
Android поддерживает дневной / ночной режим с
../values/colors.xml
а также
../values-night/colors.xml
,
Если бы я хотел добавить другую цветовую папку, скажем, для контрастных цветов
(../values-highconst/colors.xml
), есть ли способ добавить дополнительные цветовые папки и сделать так, чтобы он выбирал цвета в этой дополнительной папке в зависимости от выполнения определенного условия?
Я думал сделать это с помощью standard_theme.xml, high_contrast_theme.xml, и когда мы пытаемся добавить дневной / ночной режим к каждой теме, становится сложнее управлять и поддерживать с несколькими разработчиками, работающими над проектом. Как нам этого добиться?
1 ответ
Вам нужно определить attrs.xml, как показано ниже..res/values /attrs.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="tm">
<attr name="background_color" format="color" />
<attr name="card_background" format="color" />
<attr name="text_color" format="color" />
<attr name="tint_color" format="color" />
<attr name="button_color" format="color" />
<attr name="button_text_color" format="color" />
<attr name="icon_color" format="color" />
<attr name="toolbar_color" format="color" />
<attr name="toolbar_content_color" format="color" />
<attr name="edit_text_background" format="color" />
<attr name="edit_text_color" format="color" />
<attr name="edit_text_hint" format="color" />
</declare-styleable>
</resources>
а затем определите стили в../res/values/styles, как показано ниже
<!-- Base application theme. -->
<!-- Base light/day theme. -->
<style name="darkTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="background_color">#fcffe3</item>
<item name="card_background">#2d2e30</item>
<item name="text_color">#999797</item>
<item name="toolbar_color">@color/black</item>
<item name="toolbar_content_color">@color/yellowText</item>
<item name="tint_color">@color/colorAccent</item>
<item name="button_color">@color/colorPrimary</item>
<item name="model_item_color">@color/colorPrimary</item>
<item name="icon_color">@color/colorAccent</item>
<item name="text_icon_dr">@color/black</item>
<item name="button_text_color">@color/black</item>
<item name="hint_color">#6e6f70</item>
<item name="btn_color">@color/yellowButton</item>
<item name="edit_text_background">@color/white</item>
<item name="edit_text_color">@color/black</item>
<item name="edit_text_hint">@color/brown_400</item>
<item name="text_bg_white">@color/black</item>
</style>
<!-- Base dark/night theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">#9c2917</item>
<item name="background_color">@color/colorPrimary</item>
<item name="card_background">#d3d6d7</item>
<item name="text_color">@color/white</item>
<item name="toolbar_color">@color/white</item>
<item name="toolbar_content_color">@color/yellowText</item>
<item name="tint_color">#d1d100</item>
<item name="button_color">@color/colorPrimary</item>
<item name="model_item_color">@color/colorPrimary</item>
<item name="icon_color">#331611</item>
<item name="text_icon_dr">@color/colorAccent</item>
<item name="button_text_color">@color/black</item>
<item name="hint_color">#9ef9f9f9</item>
<item name="edit_text_background">@color/white</item>
<item name="edit_text_color">@color/black</item>
<item name="edit_text_hint">@color/brown_400</item>
<item name="text_bg_white">@color/black</item>
<item name="btn_color">@color/yellowButton</item>
</style>
это работа для меня для мульти темы Надеюсь быть полезным для вас