我正在使用AppCompat并成功实现了使用棒棒糖推出的新操作栏。唯一的问题是操作项的按下背景颜色。我想在按下时为动作项显示不同的背景颜色。知道如何做到这一点吗?
答案 0 :(得分:3)
你有几个选择。但首先是一些背景知识:
AppCompat中的操作项使用主题属性?attr / actionBarItemBackground (请参阅res / values / styles_base.xml),该属性设置为?attr / selectableItemBackgroundBorderless (请参阅res /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的drawable和drawable-v21版本,后者其中包含涟漪。
答案 1 :(得分:0)
对我来说这很有效:
<!-- pre 21 -->
<item name="actionBarItemBackground">@drawable/selector_ab_tab_indicator</item>
<!-- post 21 -->
<item name="android:selectableItemBackgroundBorderless">@drawable/selector_ab_tab_indicator</item>