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

问题描述 投票:0回答:1

无论我在这个主题上做了多少阅读,我似乎无法得到我想要的东西 - 但我想要的却很简单。

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

android button text colors styles
1个回答
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>

© www.soinside.com 2019 - 2024. All rights reserved.