我正在使用 AppCompat 并成功实现了与 Lollipop 一起推出的新操作栏。唯一的问题是操作项的按下背景颜色。我想在按下操作项时显示不同的背景颜色。知道如何做到吗?
最佳答案
您有几个选择。但首先,一些背景知识:
AppCompat 中的操作项使用主题属性 ?attr/actionBarItemBackground(请参阅 res/values/styles_base.xml),该属性设置为 ?attr/selectableItemBackgroundBorderless(请参阅 res/values/styles_base.xml)/styles/themes_base.xml)默认情况下。在以前的版本中,此属性在 L 和 @drawable/abc_item_background_holo_light 上设置为无边框波纹。
操作栏本身通过设置 ?attr/actionBarTheme (themes_base.xml) 进行主题化,默认设置为 @style/ThemeOverlay.AppCompat.ActionBar。在 Holo 上,此主题会覆盖 actionBarItemBackground,因此您需要在此处进行更改。
因此,覆盖所有操作栏的操作项背景的简单方法是在 actionBarTheme 中设置 actionBarItemBackground。您可能还想重写 selectableItemBackground,因为 CloseMode 项不使用 actionBarItemBackground(不知道为什么)。
值/styles.xml:
<style name="MyAppTheme" parent="Theme.AppCompat">
...
<item name="actionBarTheme">@style/MyActionBarTheme</item>
</style>
<style name="MyActionBarTheme" parent="ThemeOverlay.AppCompat.ActionBar">
...
<item name="actionBarItemBackground">@drawable/whatever_you_want</item>
<item name="selectableItemBackground">@drawable/whatever_you_want</item>
</style>
注意:这些更改适用于所有 API 级别,因此,如果您仍然想要 API 21+ 上的涟漪,则需要 @drawable/whatever_you_want 的可绘制版本和可绘制-v21 版本,后者其中包含波纹。
关于android - 更改 Lollipop 操作栏的操作栏项目的按下颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26651373/