【问题标题】:Changing default text colour and still showing disabled menu items in different colour更改默认文本颜色并仍以不同颜色显示禁用的菜单项
【发布时间】:2014-01-22 09:47:07
【问题描述】:

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

寻找一种简单的方法来将应用程序中所有位置的默认设置更改为黑色,我发现这可行:

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

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

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

我正在尝试使用 textColorPrimaryInversetextColorPrimaryDisableOnlytextColorPrimaryInverseDisableOnlydisabledAlpha,但这些似乎并没有影响溢出菜单。

【问题讨论】:

  • 其实我的同事已经为我解决了这个问题。他很快就会发布答案。

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


【解决方案1】:

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

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

【讨论】:

  • 注意:如果selector 中的 2 个两个语句序列互换,则它不起作用。因为它变得无法访问。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-21
  • 2017-10-25
  • 2011-05-09
  • 1970-01-01
相关资源
最近更新 更多