android - 更改 Lollipop 操作栏的操作栏项目的按下颜色

标签 android android-actionbar android-5.0-lollipop android-appcompat

我正在使用 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/

相关文章:

android - 我想删除操作栏下方的分隔线

android-5.0-lollipop - HAXM 和 Lollipop

android - Android Lollipop 中不使用 NFC 的设备所有者

android - 让 DrawerLayout 在 ActionBar 上滑动

android lollipop 和 socket.io 不能一起工作

java - Android-java.lang.IllegalArgumentException

android - Android .apk 文件可以安装在普通的 Linux PC 上吗?

android - 接收来电时振动设置未关闭 - Android

java - 在 ListView 中,Android 可以加载多少列表项

java - 强制 ActionBar 显示完整标题而不被截断?