更改默认文本颜色并仍显示不同颜色的禁用菜单项

时间:2014-01-22 09:47:08

标签: android android-actionbar android-theme android-menu

Theme.Holo.Light为基本主题,设计师注意到默认文本颜色不是黑色,而是深灰色(#505050)。我们想把它改成黑色。

enter image description here

在应用程序中找到一种简单的方法将默认值更改为黑色,我发现这有效:

<resources>    
    <style name="MyAppTheme" parent="android:Theme.Holo.Light">
        <item name="android:textColor">@android:color/black</item>
    </style>
</resources>

现在,问题,这也会改变操作栏溢出菜单中已禁用项目的颜色。 如何在禁用菜单项看起来“禁用”时覆盖默认文字颜色?

菜单应如下所示,但如上所述使用android:textColor,它会将所有项目更改为黑色。

enter image description here

我正在尝试textColorPrimaryInversetextColorPrimaryDisableOnlytextColorPrimaryInverseDisableOnlydisabledAlpha,但这些似乎不会影响溢出菜单。

1 个答案:

答案 0 :(得分:11)

您可以使用drawable作为文本颜色,而在drawable中,您可以使用selector根据启用状态选择颜色。使用以下可绘制定义作为颜色将使禁用的菜单项为灰色,其余为黑色。

例如res/drawable/default_text_colour.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="false" android:color="@android:color/darker_gray"/>
    <item android:color="@android:color/black"/>
</selector>

然后,使用drawable:

<item name="android:textColor">@drawable/default_text_colour</item>