修改ACTIONBAR样式
步骤:
1. 自定义style
<style name="<span style="color: #ff0000;">Theme.CustomActionBar</span>" parent="@style/Theme.AppCompat"> <item name="android:actionBarStyle">@style/ActionBar</item> <item name="android:actionBarDivider">@null</item> <item name="android:actionOverflowButtonStyle">@style/Theme.CustomActionBar.OverFlow</item> <!-- Support library compatibility --> <item name="actionBarStyle">@style/MainActionBar</item> <item name="actionBarDivider">@null</item> <item name="actionOverflowButtonStyle">@style/Theme.CustomActionBar.OverFlow</item> </style> <!-- ActionBar styles --> <style name="ActionBar" parent="@style/Widget.AppCompat.ActionBar"> <item name="android:background">@android:color/white</item> <item name="android:titleTextStyle">@style/ActionBarTitleText</item> <!-- Support library compatibility --> <item name="background">@android:color/white</item> <item name="titleTextStyle">@style/MainActionBarTitleText</item> </style> <!-- ActionBar title text --> <style name="ActionBarTitleText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"> <item name="android:textColor">@android:color/black</item> </style>
2. 设置activity的theme为自定义style
<activity ...... android:theme="@style/<span style="color: #ff0000;">Theme.CustomActionBar</span>" >
- 自定义style中,可以设置的项目包括:
(1)Overflow button样式:actionOverflowButtonStyle
(2)actionbar背景色:ActionBar – background
(3)actionbar title的文字颜色:ActionBarTitleText – textColor
- 某些actionbar不显示overflow button,是由于手机本身有物理home键。若这种情况下也需要显示overflow button,可以这样做:
void setOverflowShowingAlways() { try { ViewConfiguration config = ViewConfiguration.get(this); Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey"); menuKeyField.setAccessible(true); menuKeyField.setBoolean(config, false); } catch (Exception e) { e.printStackTrace(); } } @Override void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(......); setOverflowShowingAlways(); ...... }
- 如果需要使得actionbar的title居中,则需要使用自定义actionbar:
@Override void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(......); getSupportActionBar().setDisplayOptions( ActionBar.DISPLAY_SHOW_CUSTOM); getSupportActionBar().setCustomView( R.layout.<span style="color: #339966;">actionbar</span>); ...... }
其中,actionbar是自定义layout,对应actionbar中的布局
- 某些theme的actionbar下边框带有阴影,使得actionbar有了分割线。如果需要去掉分割线,需要修改theme。例如,名称带有Light的theme会有阴影,改为不带Light则没有阴影。

参考:
http://stackoverflow.com/questions/10961107/android-remove-more-actions-button-from-the-actionbar
http://stackoverflow.com/questions/11425660/change-color-of-the-overflow-button-on-actionbar
http://stackoverflow.com/questions/18950839/i-want-to-remove-the-divider-under-the-action-bar
http://blog.csdn.net/xy_nyle/article/details/18970211

浙公网安备 33010602011771号