设置全局文本颜色并保留禁用的按钮颜色

时间:2019-02-26 17:33:01

标签: android button text colors styles

无论我在该主题上做了多少阅读,我似乎都无法获得想要的东西-但是我想要的东西很简单。

我正在基于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似乎特别困难。

1 个答案:

答案 0 :(得分:0)

我最终设法使它开始工作。我必须使用选择器。我在下面提供了解决方案。

<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>