无论我在这个主题上做了多少阅读,我似乎无法得到我想要的东西 - 但我想要的却很简单。
我正在基于AppCompat NoActionBar为我的应用程序应用全局样式。这给出了白色文本,我想将其更改为深色。这是我的styles.xml:
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorAccent">@color/colorSecondary</item>
<item name="android:textColor">#ff4400</item>
</style>
<style name="ToolBarStyle" parent="Theme.AppCompat">
<item name="android:textColorPrimary">@android:color/white</item>
<item name="android:textColorSecondary">@android:color/white</item>
<item name="actionMenuTextColor">@android:color/white</item>
<item name="android:background">@color/colorPrimary</item>
<item name="colorControlNormal">@android:color/white</item>
</style>
这可以。文本颜色随处变为深色(这里设置为红色,这样我就可以看到发生了什么)。不幸的是,这也覆盖了按钮的所有文本着色。禁用按钮显示深色,无法将其与启用按钮区分开来。我尝试将样式应用于按钮,但textColor始终覆盖禁用的颜色。
关于如何继续,我有点不知所措。我不想在每个按钮上应用选择器,也不想通过在每个按钮上设置样式来单独为所有按钮着色。我想要一个整体的全球颜色变化 - Android似乎非常困难。
我最终成功地让它发挥作用。我不得不使用一个选择器。我提供下面的解决方案。
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorButtonNormal">@color/colorSecondary</item>
<item name="android:textColorPrimary">@color/primary_text_color_selector</item>
<item name="android:textColorSecondary">@color/secondary_text_color_selector</item>
<item name="alertDialogTheme">@style/ThemeDialog</item>
</style>
<style name="ThemeDialog" parent="Theme.AppCompat.Light.Dialog.Alert">
<item name="android:textColorPrimary">@color/primary_text_color_selector</item>
<item name="android:background">@color/colorTertiary</item>
</style>
<style name="ToolBarStyle" parent="Theme.AppCompat">
<item name="android:textColorPrimary">@android:color/white</item>
<item name="android:textColorSecondary">@android:color/white</item>
<item name="actionMenuTextColor">@android:color/white</item>
<item name="android:background">@color/colorPrimary</item>
<item name="colorControlNormal">@android:color/white</item>
</style>