当按下时更改操作栏按钮的背景颜色

11
如果我在操作栏中按下一个按钮,那么它的背景颜色不是我想要的。我的项目的背景颜色没有响应我的点击事件。如何更改此并在按下时更改背景颜色?

你需要自定义你的操作栏。查看这两个链接:Customizing ActionBar Custom ActionBar - Bri6ko
我认为你也需要这个链接:http://jgilfelt.github.io/android-actionbarstylegenerator/ - hamedjj
2个回答

21

您需要声明 android:actionBarItemBackground 属性,它是以下内容:

用于操作栏项目的自定义项目状态列表可绘制背景。

然后,在您的样式中按照以下方式操作:

<style name="CustomStyle" parent="@style/Theme.Holo.Light" >
    <item name="android:actionBarItemBackground">@drawable/ab_item_background</item>
    <item name="actionBarItemBackground">@drawable/ab_item_background</item>
</style>  

因此,使用selector和每个状态(按下、聚焦、禁用等)放置您自己的可绘制对象,以获得预期的背景。例如,上面声明的ab_item_background.xml可像这样:

<selector xmlns:android="http://schemas.android.com/apk/res/android" 
    android:exitFadeDuration="@android:integer/config_mediumAnimTime">
    <!-- focused/pressed: color=red -->
    <item 
        android:state_focused="true"
        android:state_pressed="true"
        android:drawable="@color/red" />
    <!-- pressed: color=red -->
    <item 
        android:state_pressed="true"
        android:drawable="@color/red" />
    <!-- normal: color=transparent -->
    <item 
        android:drawable="@android:color/transparent" />
</selector>

美化Action Bar中,您可以找到所有定制可能性以及实现它们所需的所有属性。


通过使用DarkActionBar修复了它。 - MaartenDekkers
工作得非常完美,谢谢。只有一个问题,Android 能理解 android:actionBarItemBackground,而 actionBarItemBackground 则会出错,所以我把它删除了,这两个都是必须的吗? - Rohan Kandwal
1
这取决于你的操作栏 @RohanKandwal。如果你使用SherlockAB或Support库,你必须使用它。 - Blo
@Fllo 我使用支持库,正如我所说,“actionBarItemBackground”在编译时出现错误,因此我将其删除了。在这种情况下,我该如何同时使用它们呢? - Rohan Kandwal
我看到了@RohanKandwal。当你在style.xml中编写这些属性时,你必须关闭该文件,清理并保存你的项目。 - Blo

1
ActionBar actionBar = getActionBar();
actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#0a0a0a")));

这可能会有所帮助。

1
这是更改操作栏背景颜色,而非主页按钮的方法。 - Duyen Hang Kim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接