更改操作栏onPressed颜色

我无法弄清楚如何更改Android上的操作栏项目“onPressed”颜色。 我不是在谈论动作栏的背景颜色,而是在谈论蓝色的状态。 我怎样才能改变这种颜色或至less摆脱它? 例如,带有homeAsUpIndicator的App图标。

我试图改变操作栏风格和菜单项风格,但没有任何工作。

谢谢

编辑到目前为止,这是我的实现:

我的风格xml:

<style name="Theme.AppTheme" parent="@android:style/Theme.Holo"> <item name="android:actionBarStyle">@style/MyActionBar</item> <item name="android:selectableItemBackground">@android:color/transparent</item> <item name="android:windowEnterAnimation">@anim/fadein</item> <item name="android:windowExitAnimation">@anim/fadeout</item> <item name="android:actionBarItemBackground">@android:color/transparent</item> </style> <style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar"> <item name="android:background">@drawable/actionbarheader</item> <item name="android:backgroundStacked">@drawable/actionbarheader</item> <item name="android:backgroundSplit">@drawable/actionbarheader</item> <item name="android:titleTextStyle">@style/ActionBarTitle</item> <item name="android:actionBarItemBackground">@android:color/transparent</item> <item name="android:actionButtonStyle">@style/MyActionButtonStyle</item> <item name="android:homeAsUpIndicator">@drawable/actionbarlogo</item> <item name="android:icon">@drawable/app_icon</item>> </style> <style name="ActionBarTitle" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title"> <item name="android:textSize">20sp</item> </style> <style name="MyActionButtonStyle" parent="@android:style/Widget.Holo.Light.ActionButton"> <item name="android:background">@android:color/transparent</item> </style> 

然后我有一个drawbarog的actionbarogo:

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/actionbarlogo_on" android:state_pressed="true"/> <item android:drawable="@drawable/actionbarlogo_on" android:state_focused="true"/> <item android:drawable="@drawable/actionbarlogo_off"/> </selector> 

我的菜单xml的操作栏项目:

 <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/ContactsMode" android:icon="@drawable/actionbarcontacts" android:title="@string/contacts" android:orderInCategory="100" android:showAsAction="always" android:background="@android:color/transparent" /> </menu> 

最后,该项目的绘制:

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/actionbarcontacts_on" android:state_pressed="true"/> <item android:drawable="@drawable/actionbarcontacts_on" android:state_focused="true"/> <item android:drawable="@drawable/actionbarcontacts_off"/> </selector> 

这里是我如何创buildActionBar的菜单项:

 public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.main_menu, menu); actionBar.setIcon(R.drawable.actionbarlogo); return true; } public boolean onPrepareOptionsMenu(Menu menu) { MenuItem item= menu.findItem(R.id.ContactsMode); if(ContactsButton) item.setVisible(true); else item.setVisible(false); return true; } 

Solutions Collecting From Web of "更改操作栏onPressed颜色"

要设置应用程序图标的背景以及homeAsUpIndicator(这两个图标有一个共同的背景),您必须在主题中设置android:actionBarItemBackground项目。 主题必须包含这样的东西(我假设你使用ActionBarSherlock ):

 <style name="MyTheme" parent="@style/Theme.Sherlock"> <!-- for ActionBarSherlock --> <item name="actionBarItemBackground">@drawable/my_background</item> <!-- for native ActionBar --> <item name="android:actionBarItemBackground">@drawable/my_background</item> </style> 

可绘制的drawable/my_background.xml是一个StaleListDrawable ,包含如下所示的内容:

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@drawable/my_background_pressed" /> <item android:drawable="@drawable/my_background_normal" /> </selector> 

要完全禁用背景,您可以设置透明背景,或者在主题中设置@null值也可以。

主题项android:actionBarItemBackground actionBarItemBackground为app图标和homeAsUpIndicator设置背景。 但它也设置菜单项的默认背景,溢出图标和标题的背景 。 这些背景可以被覆盖。

菜单项

要更改菜单项背景,请在主题中设置一个正确的(android:)actionButtonStyle ,如下所示:

 <style name="MyTheme" parent="@style/Theme.Sherlock"> <item name="actionButtonStyle">@style/MyActionButtonStyle</item> <item name="android:actionButtonStyle">@style/MyActionButtonStyle</item> </style> 

MyActionButtonStyle将包含这样的东西:

 <style name="MyActionButtonStyle" parent="@style/Widget.Sherlock.ActionButton"> <item name="android:background">@drawable/my_background</item> </style> 

溢出图标

最后,改变溢出图标背景设置一个适当的android:actionOverflowButtonStyle在这样的主题:

 <style name="MyTheme" parent="@style/Theme.Sherlock"> <item name="actionOverflowButtonStyle">@style/MyOverflowButtonStyle</item> <item name="android:actionOverflowButtonStyle">@style/MyOverflowButtonStyle</item> </style> 

MyOverflowButtonStyle将包含这样的东西:

 <style name="MyOverflowButtonStyle" parent="@style/Widget.Sherlock.ActionButton.Overflow"> <item name="android:background">@drawable/my_background</item> </style> 

修复。 有一个父活动改变onCreate方法中的主题…

我不知道你可以在活动中以编程方式设置主题:

 setTheme(R.style.MyTheme);