如何指定android自定义颜色资源:白天/夜晚/高对比度

dis*_*ame 6 android accessibility android-theme android-resources android-color

Android 支持日/夜模式

../values/colors.xml

../values-night/colors.xml

如果我想添加另一个颜色文件夹,例如高对比度颜色

( ../values-highconst/colors.xml),有没有办法添加额外的颜色文件夹,并使其根据满足特定条件来选择该额外文件夹中的颜色?

我想过使用 standard_theme.xml、high_contrast_theme.xml 来实现,当我们尝试向每个主题添加日/夜模式时,多个开发人员在该项目上工作时管理和维护会变得更加困难。我们如何实现这一目标?

meh*_*avi 3

你必须像下面这样定义 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>
Run Code Online (Sandbox Code Playgroud)

然后在 ../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>
Run Code Online (Sandbox Code Playgroud)

这对我来说适用于多主题希望对你有用