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

标签 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 但这些似乎没有影响溢出菜单。

最佳答案

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

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

然后,使用可绘制对象:

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

关于android - 更改默认文本颜色并仍然以不同颜色显示禁用的菜单项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21279319/

相关文章:

java - Android studio 中不允许嵌套事务

c# - 为什么不调用 AsyncTask 中的 OnProgressUpdate?

android - 如何将可以在运行时更改的主题应用到 UI?

android - 从风格上设置指定的 View 背景并按主题更改

Android Studio 1.5.1渲染问题

android - 我有一个 EditText 字段,我想在应用程序再次打开时保存它

Android ListView 在滚动时重复编辑文本值

android - 使用工具栏中的 SearchView 自动打开/关闭键盘

带有 ActionBar Sherlock 的 Android。 ImageButton 没有获取 onClick 事件

android - ActionBar Logo 居中,Action 项目位于两侧