更改appcompat的操作栏菜单所选文本颜色

时间:2014-02-20 18:36:32

标签: android android-actionbar android-styles android-actionbar-compat

尝试使用android-support-v7-appcompat设置操作栏文本颜色时遇到了很多麻烦。我能够将选择器颜色从默认颜色更改为浅灰色,但是当我选择某些内容时,文本颜色也会发生变化。我希望用户进行选择时文本颜色保持黑色。有任何想法吗?谢谢!

Text Color needs to stay black

2 个答案:

答案 0 :(得分:7)

在我的themes.xml中,这就是诀窍

<style name="AppTheme.AppCompat.Light" parent="@style/Theme.AppCompat.Light"> 
        <item name="android:itemTextAppearance">@style/MenuTextAppearance</item>    
</style>

<style name="MenuTextAppearance">
        <item name="android:textColor">@android:color/black</item>
</style>

此外,我发现您可以使用spannable字符串以编程方式自定义menuItems的文本颜色。这导致应用程序在使用appcompay-v7时崩溃,但其他人已经成功使用了Sherlock,Holo等。示例:

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.your_menu, menu);

    int positionOfMenuItem = 0; // or whatever...
    MenuItem item = menu.getItem(positionOfMenuItem);
    SpannableString s = new SpannableString("My red MenuItem");
    s.setSpan(new ForegroundColorSpan(Color.RED), 0, s.length(), 0);
    item.setTitle(s);
} 

https://stackoverflow.com/a/19008593/2820963

如果您希望不同的菜单项具有不同的颜色,这将是很好的。

答案 1 :(得分:0)

我相信选择项目有一种样式,因此您需要明确定义选择项目时的文本颜色,或者您的应用程序将恢复为默认的文本颜色。该属性应该类似于android:textColorHighlight