Sho*_*ath 15 android android-actionbar
我无法弄清楚如何在Android上更改操作栏项"onPressed"颜色.我不是在谈论动作栏背景颜色,而是关于蓝色状态.我怎样才能改变这种颜色或至少摆脱它?例如,带有homeAsUpIndicator的App Icon.
我试图改变动作栏样式和菜单项样式,但没有任何效果.
谢谢
编辑 这是我到目前为止的实现:
我的风格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>
Run Code Online (Sandbox Code Playgroud)
然后我有一个drawable for 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>
Run Code Online (Sandbox Code Playgroud)
我的操作栏项的菜单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>
Run Code Online (Sandbox Code Playgroud)
最后,该项目的drawable:
<?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>
Run Code Online (Sandbox Code Playgroud)
以下是我为ActionBar创建菜单项的方法:
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;
}
Run Code Online (Sandbox Code Playgroud)
Tom*_*mik 38
要设置app图标的背景以及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>
Run Code Online (Sandbox Code Playgroud)
drawable 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>
Run Code Online (Sandbox Code Playgroud)
要完全禁用背景,您可以设置透明背景,或者@null主题中的值也可以使用.
主题项android: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>
Run Code Online (Sandbox Code Playgroud)
而MyActionButtonStyle将包含这样的事情:
<style name="MyActionButtonStyle" parent="@style/Widget.Sherlock.ActionButton">
<item name="android:background">@drawable/my_background</item>
</style>
Run Code Online (Sandbox Code Playgroud)
溢出图标
最后,要更改主题中的溢出图标背景设置android:actionOverflowButtonStyle,如下所示:
<style name="MyTheme" parent="@style/Theme.Sherlock">
<item name="actionOverflowButtonStyle">@style/MyOverflowButtonStyle</item>
<item name="android:actionOverflowButtonStyle">@style/MyOverflowButtonStyle</item>
</style>
Run Code Online (Sandbox Code Playgroud)
而MyOverflowButtonStyle将包含这样的事情:
<style name="MyOverflowButtonStyle" parent="@style/Widget.Sherlock.ActionButton.Overflow">
<item name="android:background">@drawable/my_background</item>
</style>
Run Code Online (Sandbox Code Playgroud)
修复。有一个父活动在 onCreate 方法中更改主题...
我不知道您可以通过以下方式在活动中以编程方式设置主题:
setTheme(R.style.MyTheme);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15841 次 |
| 最近记录: |