Android ICS: Remove blue divider in ActionBar?

2019-01-22 06:07发布

问题:

I am working on an app which will be full-screen, but will utilize some of the functionalities of the ActionBar. With the Ice Cream Sandwhich release, I see that I get a blue line divider/separator as part of the ActionBar. Normally, it would be good for consistency, but in my case I need to remove the divider.

How can I remove or style the divider of the ActionBar in ICS?

Tried setting a custom theme with "android:style/Widget.Holo.ActionBar" as parent. However, settings such as the one below has no effect

<item name="android:divider">#FFFFFF</item>

回答1:

The graphic asset containing the blue bottom line is the background of the action bar's container view and is set to @android:drawable/ab_transparent_dark_holo when using the default Holo Dark theme.

To remove this line, you'll need to create a custom style for your action bar (based on Widget.Holo.ActionBar or Widget.Holo.Light.ActionBar (or the .Solid variants) and set the android:background to something that doesn't include the bottom border:

<style name="MyTheme" parent="android:Theme.Holo">
  <item name="android:actionBarStyle">@style/MyActionBar</item>
</style>

<style name="MyActionBar" parent="android:Widget.Holo.ActionBar">
  <item name="android:background">@drawable/your_background_here</item>
</style>

Note: Holo Dark/Light action bars have solid and transparent styles; this blue line appears by default for the transparent style. Holo Dark action bars are transparent by default and Holo Light action bars are solid by default.



回答2:

Here is a simple way to remove the divider, works from API 07 using the actionbarcompat from the support library:

@Override
public void onCreate(Bundle savedInstanceState) {
        //...
        getSupportActionBar().setBackgroundDrawable(
            getResources().getDrawable(R.drawable.whatever_you_want));
        //...
}  


回答3:

Changing the activity theme to Theme.Holo.Light.DarkActionBar removes the blue line.

<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
    <item name="android:windowBackground">@android:color/black</item>
    <item name="android:textColor">@android:color/white</item>
</style>

If you still want a black background you may want to change android:windowBackground and/or android:textColor



回答4:

add this <item name="android:windowContentOverlay">@null</item> to your app theme.