如何让android的actionbar浮动且透明

enter image description here

如上图所示,谷歌地图的actionbar是透明的,且浮动在整个布局之上,没有占用布局空间。其实要做到这样的效果,我们首先想到的是两个方面:

1.将让actionbar浮动起来。

2.给actionbar一个背景,可以为颜色也可以为图片。

下面我以背景色为颜色举个例子。

getWindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
ActionBar actionBar = getActionBar();
actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#330000ff")));

google的actionbar是分为上下两栏显示的,上面的代码只能设置顶部actionbar的背景色,为了让下面的背景色一致,还需要添加一行代码:

actionBar.setSplitBackgroundDrawable(newColorDrawable(Color.parseColor("#330000ff")));

如果我们不想在代码中设置actionbar背景,而是在style中修改xml,可以自定义actionbar,然后设置下面三个属性:

<style name="MyActionBar" parent="@android:style/Widget.Holo.ActionBar">
    <item name="android:background">@drawable/ab_stacked_solid_inverse_holo</item>
    <item name="android:backgroundStacked">#346c36</item>
    <item name="android:backgroundSplit">@drawable/ab_stacked_solid_inverse_holo</item>
</style>

其中的background和`setBackgroundDrawable`对应,`backgroundSplit`和`setSplitBackgroundDrawable`对应,而`backgroundStacked`代表的是actionbar选项卡的背景色。

但是actionbar的背景如果设置为纯色,或者为不透明的图片,那么上面的方法无法使actionbar达到透明的效果。注意上面的代码中,我们的颜色值并不是纯色的而是有一定的透明度`。#330000ff的前两位代表透明度。`