Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 更改棒棒糖操作栏的操作栏项目的按下颜色_Android_Android Actionbar_Android 5.0 Lollipop_Android Appcompat - Fatal编程技术网

Android 更改棒棒糖操作栏的操作栏项目的按下颜色

Android 更改棒棒糖操作栏的操作栏项目的按下颜色,android,android-actionbar,android-5.0-lollipop,android-appcompat,Android,Android Actionbar,Android 5.0 Lollipop,Android Appcompat,我正在使用AppCompat,并成功地实现了与棒棒糖一起推出的新动作栏。唯一的问题是动作项的背景颜色。我想在按下时为动作项显示不同的背景色。你知道怎么做吗?你有几个选择。但首先,一些背景: AppCompat中的操作项使用主题属性?attr/actionBarItemBackground(请参阅res/values/styles\u base.xml),默认情况下,该属性设置为?attr/selectableItemBackgroundless(请参阅res/styles/themes\u ba

我正在使用AppCompat,并成功地实现了与棒棒糖一起推出的新动作栏。唯一的问题是动作项的背景颜色。我想在按下时为动作项显示不同的背景色。你知道怎么做吗?

你有几个选择。但首先,一些背景:

AppCompat中的操作项使用主题属性?attr/actionBarItemBackground(请参阅res/values/styles\u base.xml),默认情况下,该属性设置为?attr/selectableItemBackgroundless(请参阅res/styles/themes\u base.xml)。此属性在L上设置为无边界波纹,在以前的版本上设置为@drawable/abc\u item\u background\u holo\u light

动作栏本身通过设置?attr/actionBarTheme(themes_base.xml)设置主题,默认情况下设置为@style/ThemeOverlay.AppCompat.ActionBar。在Holo上,此主题覆盖actionBarItemBackground,因此您需要在此处进行更改

因此,覆盖所有动作栏的动作项背景的简单方法是在actionBarTheme中设置actionBarItemBackground。您可能还希望覆盖selectableItemBackground,因为CloseMode项不使用actionBarItemBackground(不知道为什么)

values/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的drawable和drawable-v21版本,后者包含涟漪。

对于我来说,这是有效的:

    <!-- pre 21 -->
    <item name="actionBarItemBackground">@drawable/selector_ab_tab_indicator</item>
    <!-- post 21 -->
    <item name="android:selectableItemBackgroundBorderless">@drawable/selector_ab_tab_indicator</item>

@可牵引/选择器选项卡指示器
@可牵引/选择器选项卡指示器

@alanv如何使用支持工具栏执行此操作?当我扩展Widget.AppCompat.Toolbar时,actionBarItemBackground和selectableItemBackground似乎不起作用。@alanv Neve mind;我找到了原因:我使用了一个自定义的动作项。